java.math.RoundingMode带有 HALF_EVEN 模式,在等距的情况下将数字舍入到最近的偶数邻居,但为什么不带有 HALF_ODD 模式?
在 Java 中实现 HALF_ODD 舍入的最简单方法是什么?
java.math.RoundingMode带有 HALF_EVEN 模式,在等距的情况下将数字舍入到最近的偶数邻居,但为什么不带有 HALF_ODD 模式?
在 Java 中实现 HALF_ODD 舍入的最简单方法是什么?
我希望这个链接可以帮助你。
提出的解决方案是:
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方法的源代码,一切都在其中发生。