Bal*_*pos 1 java rounding scale bigdecimal
我正在尝试对这样的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
Run Code Online (Sandbox Code Playgroud)
这不是5.46,还是我误解了什么?
Kli*_*cou 10
仅当实际值恰好位于两个可能的取整值之间的一半时,才将HALF_DOWN取整。即5.46500-> 5.46。另一方面是5.4650000001-> 5.47,因为它比5.46更接近5.47。
也许您正在寻找的是RoundingMode.DOWN,它总是四舍五入。