Merhabalar arkadaşlar, Sitemizi programlama ile ilgilenen bütün arkadaşlarımızın Türkçe içerik konusunda çektiği sıkıntılar düşünülerek soru/cevap şeklinde bir etkileşimde bulunabilmesi için kurduk. Umuyoruz hepimiz için güzel bir deneyim olur. Hasscript Ekibi

0
Java'da BigDecimal ile Double farkı nedir?

Açık 1 Cevaplar 182 Gösterim Java
Java'da uygulama yazarken neden double neden BigDecimal kullanmalıyız? Farkı nedir?

1 cevap

1

Bir örnek üstünden ilerleyelim. Elimizde aşağıdaki gibi iki değer olsun. Bu değerleri hem BigDecimal, hem double olarak tanımlayalım ve çalıştıralım.


		BigDecimal x = new BigDecimal("0.5");
		BigDecimal y = new BigDecimal("0.4");
		System.out.println ((x.subtract((y))));
		double x1 = 0.5;
		double y1 = 0.4;
		System.out.println(x1-y1);

Sonucun aşağıdaki gibi olduğunu göreceksiniz. Eğer kullandığınız projede virgülden sonraki değerlerin hassasiyeti ve önemi bulunuyorsa yani yuvarlama yapmadan net sonucun görünmesi gerekiyorsa BigDecimal kullanılmalıdır. Sonucun virgül sonraki değerlerinin hassasiyeti önemli değilse ve yuvarlanmış bir değer olması isteniyorsa double tercih edilebilir.

BigDecimal = 0.1
double =0.09999999999999998

 

(201 puan)
düzenledi
2Yorumlar
(5.5k puan)

Benim dikkatimi çeken eğer BigDecimal kullanıyorsan operator overloading olmadığından dört işlem için +-/* kullanamıyorsun. Onun yerine metodları var. Çok kullanışlı gelmiyor o yüzden. Ayrıca aşağıdaki kod da hata veriyor. Dikkat edilmesi gerekir.

var bir = new BigDecimal(1);
var uc = new BigDecimal(3);

System.out.print(bir.divide(uc));

Alınan hata da 

 java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result.

Bitmeyen sayı yapmışlar. 

Bu güzel soru olur. Başka sorayım.