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
3.3k gösterim

Aşağıda yazdığım kod hata alıyor. Nedeni ve çözümü hakkında fikriniz var mı?

import java.math.BigDecimal;

public class BigDecimalBoluUc {
	public static void main(String[] args) {
		var bir = new BigDecimal(1);
		var uc = new BigDecimal(3);

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

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

Java kategorisinde 6.2k puan

1 cevap

0 oy

BigDecimal değer üzerindeki virgülden sonraki sayıları kaybetmeyi sevmiyor. 1/3 dediğimiz zaman 0.333 sonucu çıkıp 3 ler sonsuza gidince de bu hatayı veriyor.

Bunu düzeltmek için aşağıdaki gibi BigDecimal sınıfına bu durumda nasıl davranması gerektiği söylenmelidir.

public static void main(String[] args) {
  BigDecimal bir = BigDecimal.valueOf(1l);
  BigDecimal uc = BigDecimal.valueOf(3l);
  System.out.println(bir.divide(uc, MathContext.DECIMAL128));
}

BigDecimal.divide metodu iki parametre alıyor. Birincisi bölen değerimiz, diğeri de nasıl davranacağı hakkında bilgi. Mesela RoundingMode.FLOOR değerini ikinci parametreye verip sonucu direk yuvarlayabilirsiniz. Up deyip yukarı Down deyip aşağı çekebilirsiniz. Ama ben virgülden sonrasında belirli karaktere kadar destekleyeceğim derseniz MathContext.DECIMAL128 güzel bir seçenek olacaktır.

Yuvarlama örneği olarak

System.out.println(bir.divide(uc, RoundingMode.FLOOR));

6.2k puan

İlgili sorular

0 oy
1 cevap 270 gösterim
270 gösterim
Spring boot uygulamamı web logic üzerinde ayağa kaldırmaya çalıştığım zaman bu hatayı alıyorum. Nasıl çözebilirim?
11 Ocak 2021 Java kategorisinde kenan 6.2k puan sordu
0 oy
1 cevap 293.7K gösterim
293.7K gösterim
Bir kod parçacığı ile küsüratlı sayılar ile işlem yapyorum. Bunun sonucunda ise 254.66464 diye küsratlı sayıyı yuvarlayıp 255 veya 254.67 gibi yuvalanması hangi method vs. ile yapılabilir.
19 Temmuz 2017 Java kategorisinde tolgacelik.art 2.0k puan sordu
0 oy
1 cevap 1.4K gösterim
1.4K gösterim
Java bir entity oluşturup, veri tabanıdna dynamic veri çekmeye çalışyorum. Ama bir alttaki hatayı alıyorum, neyi gözden kaçırıyorum sizce. @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private long calorieId; private long userId; private Date activityDate; private Double ... .core.convert.support.ArrayToObjectConverter.convert(ArrayToObjectConverter.java:66) ......................
25 Temmuz 2017 Java kategorisinde tolgacelik.art 2.0k puan sordu
0 oy
1 cevap 259 gösterim
259 gösterim
Android projesi kopyaladım bir github dan, kendi localimde çalıştıramadım. Şu hatayı almaktayım. Bilgisi olan var mı? No resource found that matches the given name 'Theme.AppCompat.Light.DarkActionBar'. Orginal hata ise; [2017-05-30 14:18:31 - LoginActivity] D:\ ... .xml:8: error: Error retrieving parent for item: No resource found that matches the given name 'Theme.AppCompat.Light.DarkActionBar'.
30 Mayıs 2017 Java kategorisinde tolgacelik.art 2.0k puan sordu
0 oy
1 cevap 353 gösterim