-2
需要幾個關於添加一個只有0.39(奇怪數字)的雙精度奇怪行爲的建議。第一個片段與0.38正確例如,用0.39在Java中添加0.39雙變量
// code snippet 1 : Adding xxxx.38 to xxxx.00
double b =1031.38;
double a =1587.00;
System.out.println ("using double "+(a+b));
BigDecimal premium = BigDecimal.valueOf(a);
BigDecimal netToCompany = BigDecimal.valueOf(b);
double result =Double.parseDouble(premium.add(netToCompany).toString());
System.out.println("using BigDecimal "+result);
// correct Output xxxx.38 + xxxx.00 = xxxx.38
using double 2618.38
using BigDecimal 2618.38
***** ------------------------------ ******
// code snippet 2 : Adding xxxx.39 to xxxx.00
double b =1031.39;
double a =1587.00;
System.out.println("using double "+(a+b));
BigDecimal premium = BigDecimal.valueOf(a);
BigDecimal netToCompany = BigDecimal.valueOf(b);
double result = Double.parseDouble(premium.add(netToCompany).toString());
// wrong Output xxxx.39 + xxxx.00 = xxxx.3900000000003
using double 2618.3900000000003
using BigDecimal 2618.39
謝謝,我知道格式,但我不應該按照needm的問題是隻有0.39,爲什麼我們越來越2618.3900000000003。小數點後的長000s。不會發生任何otjer數字。如果我沒有選擇建議,將做格式。 Thx –
@ N.Murali [smbc - '0.1 + 0.2'](http://www.smbc-comics.com/?id=2999) –