为什么java.math.RoundingMode没有带有HALF_ODD舍入?

时间:2013-07-25 05:16:43

标签: java math

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

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

1 个答案:

答案 0 :(得分:1)

我希望link可以帮到你。

建议的解决方案是:

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的源代码,其中包含所有内容。