gpt4 book ai didi

java - 考虑所有数字对数字进行四舍五入

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

在java代码中,我有1个输入:16275.874999999998

我构建了一个方法,将其四舍五入为:16275.87

但正确答案是:16275.88

如何在 Java 中解决这个问题?

我当前的舍入方法:

public static double round(final double value, final int places) {
if (places < 0) throw new IllegalArgumentException();

BigDecimal bd = BigDecimal.valueOf(value);
bd = bd.setScale(places, RoundingMode.HALF_UP);
return bd.doubleValue();
}

编辑:我认为“正确答案”有 0.88,因为 9 会向上舍入,但我使用的方法并非如此,肯定会考虑重写它以考虑以前的小数点。

非常感谢大家的回复!

最佳答案

Java 实际上正确地舍入了您的数字。由于您四舍五入到 2 位,因此 setScale 方法会查看第三位小数,在您的示例中为 4。由于 4 < 5,您的 HALF_UP 舍入模式将表现得像 ROUND_DOWN,这就是为什么您的输出是 16275.87 而不是 16275.88

为了使您的数字四舍五入到 16275.88,您需要运行输入为 round(round(16275.874999999998, 3), 2) 的方法

关于java - 考虑所有数字对数字进行四舍五入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56855602/

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