所以我有这个代码
public String getRounded(double amount) {
DecimalFormat df = new DecimalFormat("0.00");
df.setRoundingMode(RoundingMode.HALF_UP);
System.out.println(df.format(amount));
System.out.println(amount);
return df.format(amount);
}
Run Code Online (Sandbox Code Playgroud)
我添加了这两行以查看差异,这是它们显示的示例.
输出就是这样的例子:
1.25
1.255
为什么会这样?HALF_UP的重点不在于此吗?我已经尝试过使用CEILING并且它会进行整理,尽管在这种情况下这不是我想要的.
谢谢
double对你说谎. System.out.println对你说谎.
amount不完全是1.255.实际上1.25499999999999989341858963598497211933135986328125,它小于确切的实数1.255.
使用HALF_UP舍入,正确地返回1.25.
如果你关心这样的细微差别,你需要从一开始就使用BigDecimal.
| 归档时间: |
|
| 查看次数: |
90 次 |
| 最近记录: |