溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C#中Math.Round的作用是什么

發布時間:2021-07-08 13:48:38 來源:億速云 閱讀:467 作者:Leah 欄目:大數據

C#中Math.Round的作用是什么,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。


開發者為了實現小數點后 2 位的四舍五入,編寫了如下代碼,

var num = Math.Round(12.125, 2);

代碼非常的簡單,開發者實際得到的結果是 12.12, 這與其所預期的四舍五入結果 12.13 相悖。

其實產生這個結果的原因是由于Math.Round 默認使用的并非是四舍五入的原則,而是四舍六入五成雙的原則。

四舍六入五成雙

所謂的四舍六入五成雙,就是說當確定有效位數之后,有效位數的下一位如果小于等于 4 就舍去,如果大于等于 6 就進一,當有效位數的下一位是 5 的時候

  • 如果 5 前面為奇數,就舍五進一
  • 如果 5 前面為偶數,就舍五不進(0 是偶數)

從統計學上講,四舍六入五成雙比四舍五入要更精確,因為大量計算的情況下,四舍五入逢五進一,會導致結果偏向大數。

例如:

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 的四舍五入

那么如何使用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);

這兩個方法都提供了第三個參數modemode是一個MidpointRounding的枚舉變量,它有 2 個可選值

  • AwayFromZero - 四舍五入
  • ToEven - 四舍六入五成雙

所以如果我們希望得到一個理想中四舍五入的結果,我們可以改用如下代碼:

var num = Math.Round(12.125, 2,
   MidpointRounding.AwayFromZero);

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女