7 EKİM 2008, Salı
Nasıl Java Yuvarlama Çift bir sorunu gidermek için
Çıkarma sorunu falan tetikliyor gibi görünüyor ve sonuç değeri Yanlış.
double tempCommission = targetPremium.doubleValue()*rate.doubleValue()/100d;
78.75 = 787.5 * 10.0/100d
double netToCompany = targetPremium.doubleValue() - tempCommission;
708.75 = 787.5 - 78.75
double dCommission = request.getPremium().doubleValue() - netToCompany;
877.8499999999999 = 1586.6 - 708.75
Sonuç beklenen değer 877.85 olurdu.
Doğru hesaplanmasını sağlamak için neler yapılmalı?
CEVAP
7 EKİM 2008, Salı
Kayan nokta aritmetik doğruluğunu kontrol etmek, java.math.BigDecimal kullanmalısınız. Daha fazla bilgi için John Zukowski The need for BigDecimal okuyun.
Örnek verilen, son satırı olarak BigDecimal kullanarak aşağıdaki olacaktır.
import java.math.BigDecimal;
BigDecimal premium = BigDecimal.valueOf(1586.6d);
BigDecimal netToCompany = BigDecimal.valueOf(708.75d);
BigDecimal commission = premium.subtract(netToCompany);
System.out.println(commission " = " premium " - " netToCompany);
Bu, aşağıdaki sonuçlar çıktı.
877.85 = 1586.6 - 708.75
Bunu Paylaş:
Nasıl yuvarlama tarafından Java bir in...
Nasıl Java SecureRandom ile performans...
Nasıl JSP dosyaları Java kod önlemek i...
Nasıl bir dosyanın içeriğini bir Java ...
Nasıl her döngü için Java çalışır?...