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)
0 komentar:
Posting Komentar