BTemplates.com

Diberdayakan oleh Blogger.

Pages

Pages - Menu

Popular Posts

Tampilkan postingan dengan label Pembulatan Angka. Tampilkan semua postingan
Tampilkan postingan dengan label Pembulatan Angka. Tampilkan semua postingan

Senin, 03 September 2007

Pembulatan Angka ke Nilai Satuan Terkecil dengan Visual Foxpro


&& FUNCTION RoundRp
&& PARAMETERS _Nilaim,_LeastBit
&& _Nilai adalah angka yang akan dibulatkan
&& _LeastBit adalah satuan terkecil yang ada
&& Pada tahun 2019, pecahan di bawah Rp. 500,- sangat sulit
&& Oleh karena itu disarankan dibulatkan ke 500 rupiah terdekat
&& Tanpa pembulatan semacam ini transaksi akan menjadi "Semu"
&& Contoh : Toko harus mengembalikan Rp. 200,- 
&& padahal uang ratusan dan duaratusan sudah tak ada
&& Contoh :
&& RoundRp(13.25,1) ==> 14
&& RoundRp(13.25) ==> 14
&& RoundRp(13.25,500) ==> 500
&& RoundRp("1300.57","1000") ==> 2000

FUNCTION RoundRp
PARAMETERS _Nilai,_LeastBit
IF VARTYPE(_LeastBit)="C"
_LeastBit=VAL(_LeastBit)
ENDIF
IF VARTYPE(_LeastBit)<>"N"
_LeastBit=1
ENDIF
IF VARTYPE(_Nilai)="C"
_Nilai=VAL(_Nilai)
ENDIF
IF VARTYPE(_Nilai)<>"N"
RETURN 0
ENDIF
IF _Nilai=0
RETURN 0
ENDIF
_revert=.F.
IF _Nilai<0
_Nilai=-1*_Nilai
_revert=.T.
ENDIF
_NonDec=INT(_Nilai/_LeastBit)*_LeastBit
_Dec=_Nilai-_NonDec
DO CASE
CASE _Nilai<_LeastBit
_Balik=_LeastBit
CASE _Dec*_LeastBit<=(0.5*_LeastBit)
_Balik=_NonDec
OTHERWISE
_Balik=_NonDec+_LeastBit
ENDCASE
RETURN IIF(_revert,-1*_Balik,_Balik)