Basic Perkenalan BigDecimal pada Java

type data BigDecimal dipakai biasa nya pada operasi perhitungan nilai nilai besar, biasa nya digunakan untuk operasi perhitungan pada nilai uang.

pada perhitungan dengan bilangan pecahan atau ber”koma” biasa nya di tangani oleh type data float, tetapi untuk perhitungan menyangkut dengan nilai uang sangat disarankan bahkan harus menggunakan type data bigdecimal

kenapa? karena nilai float atau double tidak mampu menangani perhitungan pecahan dengan tepat, pembulatan yang dilakukan tidak presisi untuk nilai uang yang biasa nya berjumlah/digit yang digunakan cukup banyak, sehingga akan menghasilkan nilai yang dapat menimbulkan kesalahan pada perhitungan berikut nya.

oia ada perbedaan yang cukup mendasar pada type data bigdecimal dengan type data int dan float, data yang bertype bigdecimal akan berupa type data object, berbeda dengan int dan float yang masih bersifat primitive cmiiw

sehingga pada perhitungan bigdecimal tidak bisa langsung menggunakan operator /,*,-. + secara langsung, untuk perhitungan akan digunakan method method yang telah disediakan oleh java seperti :

<strong>divide() </strong>untuk pembagian
<strong>multiply() </strong>untuk perkalian<strong>
subtract()</strong> untuk pengurangan
<strong>add() </strong>untuk penambahan

berikut kode untuk menjelaskan secara singkat penggunaan bigdecimal :

public static void basicBigdecimal(){
BigDecimal jumlah = new BigDecimal("100000.05");
double diskon = 0.30;
double ppn = 0.05;

BigDecimal dskn = new BigDecimal(diskon);
BigDecimal ppn_bd = new BigDecimal(ppn);

BigDecimal jml_kali_dskn = jumlah.multiply(dskn);
jml_kali_dskn = jml_kali_dskn.setScale(2, RoundingMode.HALF_UP);

BigDecimal setelahDiskon = jumlah.subtract(jml_kali_dskn);
setelahDiskon = setelahDiskon.setScale(2, RoundingMode.HALF_UP);

BigDecimal ppn_kali_diskon = setelahDiskon.multiply(ppn_bd);
ppn_kali_diskon = ppn_kali_diskon.setScale(2, RoundingMode.HALF_UP);

BigDecimal total_dengan_ppn = setelahDiskon.add(ppn_kali_diskon);
total_dengan_ppn = total_dengan_ppn.setScale(2, RoundingMode.HALF_UP);

NumberFormat formatRp = NumberFormat.getCurrencyInstance(new Locale("in", "ID"));

System.out.println(" harga sebelum diskon = "+formatRp.format(jumlah));
System.out.println(" harga setelah diskon = "+formatRp.format(setelahDiskon));
System.out.println(" harga dengan ppn = "+formatRp.format(total_dengan_ppn
}

hasil

harga sebelum diskon = IDR100,000.05
harga setelah diskon = IDR70,000.04
harga dengan ppn = IDR73,500.04

Tinggalkan Balasan

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Ubah )

Twitter picture

You are commenting using your Twitter account. Log Out / Ubah )

Facebook photo

You are commenting using your Facebook account. Log Out / Ubah )

Connecting to %s