簡體   English   中英

為什么java.math.RoundingMode不帶有HALF_ODD舍入?

[英]Why doesn't java.math.RoundingMode come with HALF_ODD rounding?

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的源代碼,其中正在發生所有事情。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM