關(guān)于C# Math 處理奇進(jìn)偶不進(jìn)的實(shí)現(xiàn)代碼
話說(shuō),最近一次系統(tǒng)維護(hù) 用JS讀取導(dǎo)入Excel中的實(shí)驗(yàn)數(shù)據(jù),出現(xiàn)被自動(dòng)四舍五入。后來(lái)到客戶(hù)現(xiàn)場(chǎng)聽(tīng)客戶(hù)反饋 Excel實(shí)驗(yàn)數(shù)據(jù)要求 奇進(jìn)偶不進(jìn)。
關(guān)于 奇進(jìn)偶不進(jìn) 產(chǎn)生的由來(lái):從統(tǒng)計(jì)學(xué)的角度,“奇進(jìn)偶舍”比“四舍五入”要科學(xué),在大量運(yùn)算時(shí),它使舍入后的結(jié)果誤差的均值趨于零,而不是像四舍五入那樣逢五就入,導(dǎo)致結(jié)果偏向大數(shù),使得誤差產(chǎn)生積累進(jìn)而產(chǎn)生系統(tǒng)誤差,“奇進(jìn)偶舍”使測(cè)量結(jié)果受到舍入誤差的影響降到最低。
Math下找了下,使用Round 的重載,使用 MidpointRounding.ToEven 就可以實(shí)現(xiàn) 奇進(jìn)偶不進(jìn)。
// 4
double d = 5.214;
double res = Math.Round(d, 2, MidpointRounding.ToEven);
Console.WriteLine(res);//5.21
//6
d = 5.216;
res = Math.Round(d, 2, MidpointRounding.ToEven);
Console.WriteLine(res);//5.22
//5
d = 5.215;
res = Math.Round(d, 2, MidpointRounding.ToEven);
Console.WriteLine(res);//5.22
d = 5.225;
res = Math.Round(d, 2, MidpointRounding.ToEven);
Console.WriteLine(res);//5.22
//不止小數(shù)點(diǎn)后3位時(shí)
d = 0.7865666;
res = Math.Round(d, 2, MidpointRounding.ToEven);
Console.WriteLine(res);//0.79
d = 0.786;
res = Math.Round(d, 2, MidpointRounding.ToEven);
Console.WriteLine(res);//0.79
d = 0.785;
res = Math.Round(d, 2, MidpointRounding.ToEven);
Console.WriteLine(res);//0.78
以上這篇關(guān)于C# Math 處理奇進(jìn)偶不進(jìn)的實(shí)現(xiàn)代碼就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
C#與C++?dll之間傳遞字符串string?wchar_t*?char*?IntPtr問(wèn)題
C#與C++?dll之間傳遞字符串string?wchar_t*?char*?IntPtr問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-11-11
C#使用Queue<T>進(jìn)行隊(duì)列設(shè)計(jì)
Queue<T>類(lèi)提供了許多方法和屬性,用于處理隊(duì)列中的元素,本文主要介紹了C#使用Queue<T>進(jìn)行隊(duì)列設(shè)計(jì),具有一定的參考價(jià)值,感興趣的可以了解一下2024-03-03
C#托管內(nèi)存與非托管內(nèi)存之間的轉(zhuǎn)換的實(shí)例講解
在本篇文章里小編給大家整理了關(guān)于C#托管內(nèi)存與非托管內(nèi)存之間的轉(zhuǎn)換的實(shí)例以及相關(guān)知識(shí)點(diǎn),需要的朋友們學(xué)習(xí)下。2019-08-08
基于C#實(shí)現(xiàn)簡(jiǎn)單的隨機(jī)抽獎(jiǎng)小程序
臨近春節(jié),大街小巷的地方都有抽獎(jiǎng)活動(dòng),那么基于C#是如何實(shí)現(xiàn)簡(jiǎn)單的抽獎(jiǎng)程序的呢,下面小編給大家分享了具體代碼,有需要的朋友參考下2016-01-01
C#中System.Array.CopyTo() 和 System.Array.Clon()&nbs
System.Array.CopyTo()和System.Array.Clone()是用于數(shù)組復(fù)制的兩種不同方法,本文就來(lái)介紹C,#中System.Array.CopyTo() 和 System.Array.Clon() 的區(qū)別,具有一定的參考價(jià)值,感興趣的可以了解一下2024-04-04
C#實(shí)現(xiàn)帶消息數(shù)的App圖標(biāo)
這篇文章主要介紹了如何使用C#實(shí)現(xiàn)帶消息數(shù)的App圖標(biāo)的方法,并附上全部源碼,分享給大家,有需要的小伙伴可以參考下。2015-12-12
WPF開(kāi)發(fā)txt閱讀器實(shí)現(xiàn)目錄提取功能
這篇文章主要為大家詳細(xì)介紹了WPF開(kāi)發(fā)txt閱讀器時(shí)如何實(shí)現(xiàn)目錄提取功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-06-06
解析StreamReader與文件亂碼問(wèn)題的解決方法
本篇文章是對(duì)StreamReader與文件亂碼問(wèn)題的解決方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05

