欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C#四舍五入用法實(shí)例

 更新時(shí)間:2018年02月10日 11:27:52   作者:jjt  
這篇文章主要為大家詳細(xì)介紹了C#四舍五入用法實(shí)例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

C# 中沒有四舍五入函數(shù),程序語言都沒有四舍五入函數(shù),因?yàn)樗纳嵛迦胨惴ú豢茖W(xué),國(guó)際通行的是 Banker 舍入法

Bankers rounding(銀行家舍入)算法,即四舍六入五取偶。事實(shí)上這也是 IEEE 規(guī)定的舍入標(biāo)準(zhǔn)。因此所有符合 IEEE 標(biāo)準(zhǔn)的語言都應(yīng)該是采用這一算法的。

Math.Round 方法默認(rèn)的也是 Banker 舍入法

在 .NET 2.0 中 Math.Round 方法有幾個(gè)重載方法

Math.Round(Decimal, MidpointRounding)
Math.Round(Double, MidpointRounding)
Math.Round(Decimal, Int32, MidpointRounding)
Math.Round(Double, Int32, MidpointRounding)

將小數(shù)值舍入到指定精度。MidpointRounding 參數(shù),指定當(dāng)一個(gè)值正好處于另兩個(gè)數(shù)中間時(shí)如何舍入這個(gè)值

該參數(shù)是個(gè) MidpointRounding 枚舉

此枚舉有兩個(gè)成員,MSDN 中的說明是:
AwayFromZero 當(dāng)一個(gè)數(shù)字是其他兩個(gè)數(shù)字的中間值時(shí),會(huì)將其舍入為兩個(gè)值中絕對(duì)值較小的值。
ToEven 當(dāng)一個(gè)數(shù)字是其他兩個(gè)數(shù)字的中間值時(shí),會(huì)將其舍入為最接近的偶數(shù)。

注 意!這里關(guān)于 MidpointRounding.AwayFromZero 的說明是錯(cuò)誤的!實(shí)際舍入為兩個(gè)值中絕對(duì)值較大的值。不過 MSDN 中的 例子是正確的,英文描述原文是 it is rounded toward the nearest number that is away from zero.

所以,要實(shí)現(xiàn)四舍五入函數(shù),對(duì)于正數(shù),可以加一個(gè) MidpointRounding.AwayFromZero 參數(shù)指定當(dāng)一個(gè)數(shù)字是其他兩個(gè)數(shù)字的中間值時(shí)其舍入為兩個(gè)值中絕對(duì)值較大的值,例:

Math.Round(3.45, 2, MidpointRounding.AwayFromZero)

不過對(duì)于負(fù)數(shù)上面的方法就又不對(duì)了

因此需要自己寫個(gè)函數(shù)來處理

第一個(gè)函數(shù):

double Round(double value, int decimals)
{
  if (value < 0)
  {
    return Math.Round(value + 5 / Math.Pow(10, decimals + 1), decimals, MidpointRounding.AwayFromZero);
  }
  else
  {
    return Math.Round(value, decimals, MidpointRounding.AwayFromZero);
  }
}

第二個(gè)函數(shù):

double Round(double d, int i)
{
  if(d >=0)
  {
    d += 5 * Math.Pow(10, -(i + 1));
  }
  else
  {
    d += -5 * Math.Pow(10, -(i + 1));
  }
  string str = d.ToString();
  string[] strs = str.Split('.');
  int idot = str.IndexOf('.');
  string prestr = strs[0];
  string poststr = strs[1];
  if(poststr.Length > i)
  {
    poststr = str.Substring(idot + 1, i);
  }
  string strd = prestr + "." + poststr;
  d = Double.Parse(strd);
  return d;
}

參數(shù):d表示要四舍五入的數(shù);i表示要保留的小數(shù)點(diǎn)后為數(shù)。

其中第二種方法是正負(fù)數(shù)都四舍五入,第一種方法是正數(shù)四舍五入,負(fù)數(shù)是五舍六入。

備注:個(gè)人認(rèn)為第一種方法適合處理貨幣計(jì)算,而第二種方法適合數(shù)據(jù)統(tǒng)計(jì)的顯示。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • C#實(shí)現(xiàn)的三種模擬自動(dòng)登錄和提交POST信息的方法

    C#實(shí)現(xiàn)的三種模擬自動(dòng)登錄和提交POST信息的方法

    這篇文章主要介紹了C#實(shí)現(xiàn)的三種模擬自動(dòng)登錄和提交POST信息的方法,分別列舉了WebBrowser、WebClient及HttpWebRequest實(shí)現(xiàn)自動(dòng)登錄及提交POST的相關(guān)實(shí)現(xiàn)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-11-11
  • C#使用CDO發(fā)送郵件的方法

    C#使用CDO發(fā)送郵件的方法

    這篇文章主要介紹了C#使用CDO發(fā)送郵件的方法,涉及C#使用Windows COM組件實(shí)現(xiàn)郵件發(fā)送的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-07-07
  • C#中的正則表達(dá)式介紹

    C#中的正則表達(dá)式介紹

    關(guān)于正則表達(dá)式,我們都知道挺繁瑣的。本文介紹的是C#中的正則表達(dá)式,希望對(duì)你有幫助,一起來看。
    2015-10-10
  • C#執(zhí)行存儲(chǔ)過程并將結(jié)果填充到GridView的方法

    C#執(zhí)行存儲(chǔ)過程并將結(jié)果填充到GridView的方法

    這篇文章主要介紹了C#執(zhí)行存儲(chǔ)過程并將結(jié)果填充到GridView的方法,結(jié)合實(shí)例形式分析了C#存儲(chǔ)過程操作及GridView控件相關(guān)操作技巧,需要的朋友可以參考下
    2017-02-02
  • 驗(yàn)證碼的三個(gè)常見漏洞和修復(fù)方法

    驗(yàn)證碼的三個(gè)常見漏洞和修復(fù)方法

    這篇文章主要介紹了驗(yàn)證碼的三個(gè)常見漏洞和修復(fù)方法,本文講解了把驗(yàn)證碼存儲(chǔ)在Cookie中、沒有進(jìn)行非空判斷、沒有及時(shí)銷毀驗(yàn)證碼三個(gè)常見問題和解決方法,需要的朋友可以參考下
    2015-03-03
  • 詳解C#如何手動(dòng)改變自制窗體的大小

    詳解C#如何手動(dòng)改變自制窗體的大小

    這篇文章主要為大家詳細(xì)介紹了在C#中如何實(shí)現(xiàn)手動(dòng)改變自制窗體的大小,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-03-03
  • WPF應(yīng)用程序本地化的最佳方法分享

    WPF應(yīng)用程序本地化的最佳方法分享

    應(yīng)用程序本地化有很多種方式,選擇合適的才是最好的,這篇文章主要為大家介紹了動(dòng)態(tài)資源的方式,可以在不重啟應(yīng)用程序的情況下進(jìn)行資源的切換,需要的可以參考下
    2023-08-08
  • C# WinForm調(diào)用Shell_NotifyIcon的示例代碼

    C# WinForm調(diào)用Shell_NotifyIcon的示例代碼

    這篇文章主要介紹了C# WinForm調(diào)用Shell_NotifyIcon的示例代碼,幫助大家更好的理解和使用c#,感興趣的朋友可以了解下
    2020-11-11
  • 如何在C#9 中使用頂級(jí)程序 (top-level)

    如何在C#9 中使用頂級(jí)程序 (top-level)

    這篇文章主要介紹了如何在C#9 中使用頂級(jí)程序 (top-level),幫助大家更好的理解和學(xué)習(xí)使用c#,感興趣的朋友可以了解下
    2021-03-03
  • C#多線程之Semaphore用法詳解

    C#多線程之Semaphore用法詳解

    這篇文章主要為大家詳細(xì)介紹了C#多線程之Semaphore用法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-08-08

最新評(píng)論