我发现使用十进制格式,并四舍五入显示模式一些值十进制格式舍入模式产生不一致的值
double b = 123.135;
//double b = 1896.675;
//double b = 523.135;
DecimalFormat df = new DecimalFormat(".##");
df.setRoundingMode(RoundingMode.HALF_UP);
System.out.println(b);
String a = df.format(b);
System.out.println(a);
double roundOff = Math.round(b * 100.0)/100.0;
System.out.println(roundOff);
主要生产出现意外的行为:
123.135
123.14
123.14
我相信这是正确的。
在使用这个值:1896.675产生如下:
1896.675
1896.67
1896.68
这一点我认为是意想不到的 - 我在做什么错在这里?
设置的BigDecimal BD =新的BigDecimal(二);并打印bd结果1896.674999999999954525264911353588104248046875,我猜是接近存储的实际值。 – user3284549