C#中Math.Round的作用是什么,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
開發者為了實現小數點后 2 位的四舍五入,編寫了如下代碼,
var num = Math.Round(12.125, 2);
代碼非常的簡單,開發者實際得到的結果是 12.12, 這與其所預期的四舍五入結果 12.13 相悖。
其實產生這個結果的原因是由于Math.Round 默認使用的并非是四舍五入的原則,而是四舍六入五成雙的原則。
所謂的四舍六入五成雙,就是說當確定有效位數之后,有效位數的下一位如果小于等于 4 就舍去,如果大于等于 6 就進一,當有效位數的下一位是 5 的時候
從統計學上講,四舍六入五成雙比四舍五入要更精確,因為大量計算的情況下,四舍五入逢五進一,會導致結果偏向大數。
例如:
1.15+1.25+1.35+1.45 = 5.2
如果有效位數是小數點后一位,使用四舍五入原則得到的結果
1.2 + 1.3 + 1.4 + 1.5 = 5.4
而使用四舍六入五成雙原則得到的結果是
1.2 + 1.2 + 1.4 + 1.4 = 5.2
由此可見四舍六入五成雙原則得到的結果更為精確。
那么如何使用Math.Round實現預期的四舍五入呢?
其實 C#中的Math.Round提供了非常多的重載方法,其中有兩個重載方法是,
public static double Round (double value,
int digits,
MidpointRounding mode);
public static decimal Round (decimal d,
int decimals,
MidpointRounding mode);
這兩個方法都提供了第三個參數mode, mode是一個MidpointRounding的枚舉變量,它有 2 個可選值
所以如果我們希望得到一個理想中四舍五入的結果,我們可以改用如下代碼:
var num = Math.Round(12.125, 2,
MidpointRounding.AwayFromZero);看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。