1

java.math.RoundingMode带有 HALF_EVEN 模式,在等距的情况下将数字舍入到最近的偶数邻居,但为什么不带有 HALF_ODD 模式?

在 Java 中实现 HALF_ODD 舍入的最简单方法是什么?

4

1 回答 1

1

我希望这个链接可以帮助你。

提出的解决方案是:

public static int RoundToNearestRoundHalfToOdd(decimal value)
{
    // First round half toward positive infinity. Then if the fraction
    // part of the original value is 0.5 and the result of rounding is
    // even, then subtract one.
    var temp = (int)Math.Floor(value + 0.5m);
    if (value - Math.Floor(value) == 0.5m && temp % 2 == 0)
        temp -= 1;
    return temp;
}

它在 C# 中,但我想你可以将它转换为 Java。

此外,为了帮助您完成任务,您可以在 Java SDK 中查看BigDecimal#divideAndRound方法的源代码,一切都在其中发生。

于 2013-07-25T05:50:18.767 回答