Java BigDecimal.divide() fonksiyonu
Java’da iki BigDecimal değeri divide() fonksiyonu ile bölmek istediğimde şu hatayı aldım;
Non-terminating decimal expansion; no exact representable decimal result.
Hatayı almamın sebebi divide fonksiyonunu yanlış kullanmammış. Şöyle iki değişkenimiz olsun;
BigDecimal sayi1 = BigDecimal.valueOf(100); BigDecimal sayi2 = BigDecimal.valueOf(50);
Bunları bölmeye çalışalım;
sayi1.divide(sayi2);
İlgili referans sayfasından da görebileceğiniz gibi bu şekilde bir kullanım yanlış. roundingMode parametresini kullanmamız zorunlu. Peki roundingMode kullanmadan bölmek mümkün mü ? Ben böyle yaptım (alttaki kod tek satır));
BigDecimal sonuc = new BigDecimal(sayi1.doubleValue() / sayi2.doubleValue());
Bu kod çalıştı. Bunun daha iyi bir yolu varsa yorum olarak yazarsanız sevinirim.




sonuc = sayi1.divide(sayi2, BigDecimal.ROUND_HALF_UP);
roundingMode set ediliyor.
Bu şekilde yapınca kesin sonucu alabiliyor muyuz ? Benim yaptığım işlemler finansal işlemler. Yani küsüratlar da önemli, yuvarlama yapamıyorum. ROUND_UNNECESSARY denedim ancak çalışmadı, hata verdi. Bende bu yolla yaptım.
divide metotunun 3 parametreli versiyonunu kullanmak gerekiyormuş Hüseyin :)
divide(BigDecimal b,int scale, RoundingMode r) şeklinde
@Selman teşekkürler :)