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 に答える