java.math.RoundingMode带有HALF_EVEN模式,在等距的情况下将数字舍入到最近的偶数邻居,但为什么它不带有HALF_ODD模式?
在Java中实现HALF_ODD舍入的最简单方法是什么?
答案 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的源代码,其中包含所有内容。