-2
ONLY 0.39(奇妙な番号)でダブルを追加する際の奇妙な動作について、いくつかの提案が必要です。あなたがBigDecimal
を使用する場合はまずスニペットは0.39Javaで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) –