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