亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

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

汝阳县| 连南| 靖边县| 高唐县| 齐齐哈尔市| 固镇县| 溧阳市| 额敏县| 雅江县| 沂南县| 页游| 岐山县| 绥芬河市| 墨玉县| 双城市| 博罗县| 伽师县| 珲春市| 称多县| 无为县| 华安县| 安福县| 古浪县| 当雄县| 南和县| 塘沽区| 灵丘县| 大城县| 高雄市| 扎赉特旗| 龙井市| 峨眉山市| 库车县| 罗田县| 出国| 兴文县| 高邮市| 读书| 荆门市| 潼关县| 巢湖市|