System.MidpointRounding 列舉
本文提供此 API 參考文件的補充備註。
使用 MidpointRounding 列舉搭配 、 MathF.Round和 Decimal.Round 的適當多載Math.Round,以提供進位進程的更多控制權。
整體四捨五入策略有兩個:四捨五入到最 接近且 導向捨入,而每個列舉欄位都只參與其中一個策略。
四捨五入至最接近
欄位:
四捨五入到最接近的運算會採用具有隱含或指定有效位數的原始數位;會檢查下一個數位,也就是該有效位數加上一個;和會傳回最接近的數位,其有效位數與原始數位相同。 如果是正數,如果下一個數位是從 0 到 4,則最接近的數位會朝負無限大。 如果下一個數位是從 6 到 9,則最接近的數位是正無限大。 若為負數,如果下一個數位是從 0 到 4,則最接近的數位會接近正無限大。 如果下一個數位是從 6 到 9,則最接近的數位是負無限大。
如果下一個數位是從 0 到 4 或 6 到 9, MidpointRounding.AwayFromZero
且 MidpointRounding.ToEven
不會影響捨入作業的結果。 不過,如果下一個數位是5,這是兩個可能結果之間的中間點,而所有剩餘的數位都是零或沒有剩餘的數位,則最接近的數位模棱兩可。 在此情況下,中的四捨五入模式 MidpointRounding
可讓您指定捨入作業會傳回離零或最接近偶數的最接近數位。
下表示范將一些負數和正數四捨五入的結果,以及捨入到最接近的模式。 用來四捨五入數位的有效位數為零,這表示小數點之後的數位會影響四捨五入作業。 例如,對於數位 -2.5,小數點後面的數位是 5。 因為該數位是中間點,所以您可以使用 MidpointRounding
值來判斷四捨五入的結果。 如果 AwayFromZero
指定 ,則會傳回 -3,因為它是離零最近的數位,且有效位數為零。 如果 ToEven
指定 ,則會傳回 -2,因為它是最接近的偶數,有效位數為零。
原始數位 | AwayFromZero | ToEven |
---|---|---|
3.5 | 4 | 4 |
2.8 | 3 | 3 |
2.5 | 3 | 2 |
2.1 | 2 | 2 |
-2.1 | -2 | -2 |
-2.5 | -3 | -2 |
-2.8 | -3 | -3 |
-3.5 | -4 | -4 |
導向四捨五入
欄位:
有向四捨五入作業會採用具有隱含或指定有效位數的原始數位,並以與原始數位相同的有效位數,以特定方向傳回下一個最接近的數位。 執行進位之預先定義數位之控件的導向模式 MidpointRounding
。
下表示范將一些負數和正數四捨五入與有向四捨五入模式的結果。 用來四捨五入數位的有效位數為零,這表示小數點前的數位會受到四捨五入運算的影響。
原始數位 | ToNegativeInfinity | ToPositiveInfinity | ToZero |
---|---|---|---|
3.5 | 3 | 4 | 3 |
2.8 | 2 | 3 | 2 |
2.5 | 2 | 3 | 2 |
2.1 | 2 | 3 | 2 |
-2.1 | -3 | -2 | -2 |
-2.5 | -3 | -2 | -2 |
-2.8 | -3 | -2 | -2 |
-3.5 | -4 | -3 | -3 |