search
Giriş
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 oy
1.5k gösterim
Java'da uygulama yazarken neden double neden BigDecimal kullanmalıyız? Farkı nedir?
Java kategorisinde 6.2k puan

1 cevap

1 oy

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

 

215 puan
düzenledi

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.

İlgili sorular

0 oy
1 cevap 1.4K gösterim
1.4K gösterim
Java programa dilinde Error ve Exception kavramları diğer dillerde de var mı öncelikle? İkinci olarak bu iki teri arasındaki temel ve genel farklar nelerdir?
1 Eylül 2018 Java kategorisinde tolgacelik.art 2.0k puan sordu
0 oy
1 cevap 1.9K gösterim
1.9K gösterim
Bir maven uygulamasını ayağa kaldırırken, JDK yerine JRE seçildiği için kalkmıyordu. Bu ikisinin ne farkı var acaba acıklayabilir misiniz?
18 Aralık 2016 Java kategorisinde tolgacelik.art 2.0k puan sordu
0 oy
1 cevap 9.2K gösterim
9.2K gösterim
Java'da string, integer vb. objelerde eşitlik kontrolü yapılırken kullanılan bu fonksiyonların farkı nedir? if (object1.equals(object2)){ } if (object1 == object2){ }
24 Aralık 2015 Java kategorisinde tolgacelik.art 2.0k puan sordu
0 oy
1 cevap 839 gösterim
839 gösterim
Java 8'de map() ve flatMap() kullanım amacı mapping yapmak . Ancak ne farkı var?
6 Ekim 2020 Java kategorisinde tolgacelik.art 2.0k puan sordu
0 oy
2 cevap 1.3K gösterim
1.3K gösterim
Java'da Set , HashSet ve TreeSet arasında ne fark vardır?
1 Ekim 2020 Java kategorisinde tolgacelik.art 2.0k puan sordu