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のソース コードを確認できます。