gpt4 book ai didi

java - 这是使用 BigDecimals 舍入的正确行为吗?

转载 作者:行者123 更新时间:2023-11-29 09:36:19 24 4
gpt4 key购买 nike

我试图像这样舍入 BigDecimals:5.46597 -> 5.46,我认为下面的代码为我做了这个,但不是。

我用 BigDecimal.round 和 BigDecimal.setScale 试过了。

BigDecimal bD = new BigDecimal(5.46597); // whole number: 5.4659700000000004393996277940459549427032470703125 
bD.setScale(2, RoundingMode.HALF_DOWN); // 5.47
bD.round(new MathContext(3, RoundingMode.HALF_DOWN)); // 5.47

这不是应该是5.46吗,还是我理解错了什么?

最佳答案

HALF_DOWN 仅当实际值恰好位于两个可能的舍入值的中间时才向下舍入。 IE。 5.46500 -> 5.46。另一方面,5.4650000001 -> 5.47,因为它比 5.46 更接近 5.47。

也许您正在寻找的是 RoundingMode.DOWN,它总是向下舍入。

关于java - 这是使用 BigDecimals 舍入的正确行为吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55851766/

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