1. 程式人生 > >C# 四舍五入中一處易錯點

C# 四舍五入中一處易錯點

它的 參數 需要 進位 註釋 info 出了 返回 .com

技術分享圖片

,你沒看錯,四舍五入的結果 和我們期待的不太一樣

Why??

進入源碼看下,註釋中解釋的很清楚。。

技術分享圖片

默認情況下,Math.Round()方法返回的是最接近的整數,這個沒問題,問題是當要轉換的數據在 兩個整數之間時即 0.5時,這個方法默認會返回兩個整數中的偶數,並不是我們認為的0.5就進位

如果我們需要實現四舍五入 我們看它的幾個重載方法

其中

技術分享圖片

這個方法的參數MidpointRounding枚舉 參數給出了當數據是兩個整數之間的數值時,如果取整數

技術分享圖片

其中第二個,會舍入較小的那個整數,也就是取較大的值,這個正是我們所希望的,所以我們四舍五入時候 需要將這個參數加上,並且參數值設為 AwayFromZero

之前正沒有仔細註意過,以後要多註意一些常用方法的重載,以防止出現類似的問題

例如 如下一段代碼:

技術分享圖片

執行完轉換後 id 的值是多少?

如果稍微不註意很容易認為是100,其實是0.out 是只傳出 不管入的

C# 四舍五入中一處易錯點