编程语言
首页 > 编程语言> > java-相同的小数点,舍入结果不同吗?

java-相同的小数点,舍入结果不同吗?

作者:互联网

这个问题已经在这里有了答案:            >            DecimalFormat with RoundingMode.HALF_UP                                    2个
>            Is floating point math broken?                                    30个
保留两位小数,小数部分相同,结果不一致

jdk1.8.0_162

DecimalFormat df = new DecimalFormat("##.00");
df.setRoundingMode(RoundingMode.HALF_UP);
System.out.println("1.985 ≈ " + df.format(1.985));
System.out.println("23.985 ≈ " + df.format(23.985));
1.985 ≈ 1.99
23.985 ≈ 23.98

输出如上,应与小数部分相同.

解决方法:

这就是floating point类型的工作方式.它们可以是一个近似值.您的两个数字的近似值不同,因为它们不是相同的数字.内部一个数字可能是1.985000000000001,另一个数字可能是23.98499999999999.另请参见here.

标签:java-8,rounding,java
来源: https://codeday.me/bug/20191024/1922658.html