1 つの実装に取り組んでいるときに、2 つの場所で表示される量の違いを見ました。さらにデバッグを行っているときに、この情報を見つけました。
2 つの小数点以下の値があり、両方とも小数点以下 2 桁に丸められます。
double value =1091.225;
double value1 =48.125;
System.out.println((double)Math.round(value * 100) / 100);
System.out.println((double)Math.round(value1 * 100) / 100);
BigDecimal price = new BigDecimal(value);
price = price.setScale(2, RoundingMode.UP);
double val= ((long) (value < 0 ? value * 100 - 0.5 : value * 100 + 0.5)) / 100.0;
BigDecimal price1 = new BigDecimal(value1);
price1 = price1.setScale(2, RoundingMode.UP);
double val1= ((long) (value1 < 0 ? value1 * 100 - 0.5 : value1 * 100 + 0.5)) / 100.0;
System.out.println(val);
System.out.println(val1);
これらは結果です
1091.22
48.13
1091.22
48.13
ただし、値を次のように変更すると
double value =1091.255;
double value1 =48.125;
結果が違う
1091.26
48.13
1091.26
48.13
なぜこれが起こっているのかを理解するのを手伝ってもらえますか?