gpt4 book ai didi

Java RoundingMode HALF_UP 未按预期舍入

转载 作者:行者123 更新时间:2023-12-01 16:47:22 26 4
gpt4 key购买 nike

所以我有这个代码

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);
}

我添加了这两行来查看差异,这是它们显示的示例。

例如,输出是这样的:

1.25

1.255

为什么会发生这种情况? HALF_UP的意义不就是向上取整吗?我尝试过使用 CEILING,它确实向上舍入,尽管在本例中这不是我想要的。

谢谢

最佳答案

double 在骗你。 System.out.println 在骗你。

amount 不完全是 1.255。它实际上是 1.25499999999999989341858963598497211933135986328125,小于确切的实数 1.255。

用 HALF_UP 进行四舍五入,正确结果是 1.25。

如果您关心这样的细微差别,则需要从一开始就使用 BigDecimal。

关于Java RoundingMode HALF_UP 未按预期舍入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47781393/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com