中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

C#中怎么實現四舍五入

發布時間:2021-07-12 10:45:18 來源:億速云 閱讀:124 作者:Leah 欄目:編程語言

本篇文章給大家分享的是有關C#中怎么實現四舍五入,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

C# 中沒有四舍五入函數,程序語言都沒有四舍五入函數,因為四舍五入算法不科學,國際通行的是 Banker 舍入法

Bankers rounding(銀行家舍入)算法,即四舍六入五取偶。事實上這也是 IEEE 規定的舍入標準。因此所有符合 IEEE 標準的語言都應該是采用這一算法的。

Math.Round 方法默認的也是 Banker 舍入法

在 .NET 2.0 中 Math.Round 方法有幾個重載方法

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

將小數值舍入到指定精度。MidpointRounding 參數,指定當一個值正好處于另兩個數中間時如何舍入這個值

該參數是個 MidpointRounding 枚舉

此枚舉有兩個成員,MSDN 中的說明是:
AwayFromZero 當一個數字是其他兩個數字的中間值時,會將其舍入為兩個值中絕對值較小的值。
ToEven 當一個數字是其他兩個數字的中間值時,會將其舍入為最接近的偶數。

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

所以,要實現四舍五入函數,對于正數,可以加一個 MidpointRounding.AwayFromZero 參數指定當一個數字是其他兩個數字的中間值時其舍入為兩個值中絕對值較大的值,例:

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

不過對于負數上面的方法就又不對了

因此需要自己寫個函數來處理

第一個函數:

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);
  }
}

第二個函數:

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;
}

參數:d表示要四舍五入的數;i表示要保留的小數點后為數。

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

備注:個人認為第一種方法適合處理貨幣計算,而第二種方法適合數據統計的顯示。

以上就是C#中怎么實現四舍五入,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。

向AI問一下細節

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

AI

西丰县| 喀喇| 永年县| 江津市| 昌图县| 嘉兴市| 乳山市| 铜梁县| 仁怀市| 中阳县| 哈密市| 沁阳市| 电白县| 江北区| 和林格尔县| 尚义县| 祁东县| 盐山县| 鄂尔多斯市| 资阳市| 阿城市| 奈曼旗| 金川县| 娱乐| 阳新县| 曲松县| 莱阳市| 和龙市| 信阳市| 镇坪县| 罗田县| 文安县| 罗定市| 博白县| 古丈县| 福泉市| 东兴市| 安阳县| 茌平县| 五大连池市| 始兴县|