Merhaba, Aşağıdaki kodda bütün cevaplar matematiksel olarak 1.6 olmasına rağmen çıktılar farklı. Bunun nedenini açıklayabilir misiniz?

    1. Adım'da double olduğu için basamak duyarlılığı daha fazla ancak son iki basamakta 14 görünüyor.
    1. Adım'da float'a dönüştüğü için basamak duyarlılığı daha az ancak son basamak 4.(?)
    1. Adım'da direk 1.6 sayısını yazdırdığımızda ise herhangi bir
      sorun ile karşılaşmıyoruz.

System.out.println(22.6%3); // 1. Adım

System.out.println((float)22.6%3); // 2. Adım

System.out.println(1.6); // 3. Adım

Output:

1.6000000000000014
1.6000004
1.6

soruldu: 10 Oca '15, 03:40

ugurcanlacin's gravatar image

ugurcanlacin
816101625
cevap kabul oranı: 11%

değiştirildi: 10 Oca '15, 03:40


Double ve float'ı bu tarz işlemler için tercih edebilirsin; ama özellikle finansal konularda uzak dur.

Onun yerine BigDecimal kullanmalısın.

Tutorial --> http://www.opentaps.org/docs/index.php/How_to_Use_Java_BigDecimal:_A_Tutorial

Benzer soru ve cevaplar --> http://stackoverflow.com/questions/6459335/accuracy-of-double-precision-multiplication-in-java

permanent link

cevaplandı: 13 Oca '15, 03:25

Tugrul%20Asik's gravatar image

Tugrul Asik
1.3k716
cevap kabul oranı: 26%

değiştirildi: 13 Oca '15, 03:30

Teşekkür ederim.

(13 Oca '15, 06:57) ugurcanlacin ugurcanlacin's gravatar image
Cevabınız
toggle preview

Bu soruyu takip et

E-Posta üzerinden:

Üyelik girişi yaptıktan sonra abonelik işlemlerini yapabilirsiniz

RSS üzerinden:

Cevaplar

Cevaplar ve Yorumlar

Yazı Formatlama

  • *italic* ya da _italic_
  • **bold** ya da __bold__
  • link:[text](http://url.com/ "başlık")
  • resim?![alt text](/path/img.jpg "başlık")
  • liste: 1. Foo 2. Bar
  • temel HTML etiketleri de kullanılabilir

Bu sorunun etiketleri:

×4
×2
×1

Soruldu: 10 Oca '15, 03:40

Görüntüleme: 495 kez

Son güncelleme: 13 Oca '15, 06:57

powered by BitNami OSQA