新聞中心
C#中Math.Round的作用是什么,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。
我們注重客戶提出的每個要求,我們充分考慮每一個細節(jié),我們積極的做好成都網(wǎng)站建設(shè)、做網(wǎng)站服務(wù),我們努力開拓更好的視野,通過不懈的努力,成都創(chuàng)新互聯(lián)贏得了業(yè)內(nèi)的良好聲譽,這一切,也不斷的激勵著我們更好的服務(wù)客戶。 主要業(yè)務(wù):網(wǎng)站建設(shè),網(wǎng)站制作,網(wǎng)站設(shè)計,小程序開發(fā),網(wǎng)站開發(fā),技術(shù)開發(fā)實力,DIV+CSS,PHP及ASP,ASP.Net,SQL數(shù)據(jù)庫的技術(shù)開發(fā)工程師。
開發(fā)者為了實現(xiàn)小數(shù)點后 2 位的四舍五入,編寫了如下代碼,
var num = Math.Round(12.125, 2);
代碼非常的簡單,開發(fā)者實際得到的結(jié)果是 12.12, 這與其所預(yù)期的四舍五入結(jié)果 12.13 相悖。
其實產(chǎn)生這個結(jié)果的原因是由于Math.Round
默認(rèn)使用的并非是四舍五入的原則,而是四舍六入五成雙的原則。
四舍六入五成雙
所謂的四舍六入五成雙,就是說當(dāng)確定有效位數(shù)之后,有效位數(shù)的下一位如果小于等于 4 就舍去,如果大于等于 6 就進一,當(dāng)有效位數(shù)的下一位是 5 的時候
如果 5 前面為奇數(shù),就舍五進一 如果 5 前面為偶數(shù),就舍五不進(0 是偶數(shù))
從統(tǒng)計學(xué)上講,四舍六入五成雙比四舍五入要更精確,因為大量計算的情況下,四舍五入逢五進一,會導(dǎo)致結(jié)果偏向大數(shù)。
例如:
1.15+1.25+1.35+1.45 = 5.2
如果有效位數(shù)是小數(shù)點后一位,使用四舍五入原則得到的結(jié)果
1.2 + 1.3 + 1.4 + 1.5 = 5.4
而使用四舍六入五成雙原則得到的結(jié)果是
1.2 + 1.2 + 1.4 + 1.4 = 5.2
由此可見四舍六入五成雙原則得到的結(jié)果更為精確。
Math.Round 的四舍五入
那么如何使用Math.Round
實現(xiàn)預(yù)期的四舍五入呢?
其實 C#中的Math.Round
提供了非常多的重載方法,其中有兩個重載方法是,
public static double Round (double value,
int digits,
MidpointRounding mode);
public static decimal Round (decimal d,
int decimals,
MidpointRounding mode);
這兩個方法都提供了第三個參數(shù)mode
, mode
是一個MidpointRounding
的枚舉變量,它有 2 個可選值
AwayFromZero - 四舍五入 ToEven - 四舍六入五成雙
所以如果我們希望得到一個理想中四舍五入的結(jié)果,我們可以改用如下代碼:
var num = Math.Round(12.125, 2,
MidpointRounding.AwayFromZero);
看完上述內(nèi)容是否對您有幫助呢?如果還想對相關(guān)知識有進一步的了解或閱讀更多相關(guān)文章,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對創(chuàng)新互聯(lián)的支持。
當(dāng)前文章:C#中Math.Round的作用是什么
文章來源:http://www.ef60e0e.cn/article/gejicj.html