在进行一种实现时,我看到在 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
谁能帮我理解为什么会这样?