亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C# > 正文

C#編程實現四舍五入、向上及下取整的方法

2020-01-24 01:23:04
字體:
來源:轉載
供稿:網友

本文實例講述了C#編程實現四舍五入、向上及下取整的方法。分享給大家供大家參考,具體如下:

在處理一些數據時,我們希望能用“四舍五入”法實現,但是C#采用的是“四舍六入五成雙”的方法,如下面的例子,就是用“四舍六入五成雙”得到的結果:

double d1 = Math.Round(1.25, 1);//1.2double d2 = Math.Round(1.24, 1);//1.2double d3 = Math.Round(1.26, 1);//1.3double d4 = Math.Round(1.35, 1);//1.4

為了用C#來實現“四舍五入”,我寫了下面的函數:

代碼

/// <summary>/// 實現數據的四舍五入法/// </summary>/// <param name="v">要進行處理的數據</param>/// <param name="x">保留的小數位數</param>/// <returns>四舍五入后的結果</returns>private double Round(double v, int x){  bool isNegative = false;  //如果是負數  if (v < 0)  {   isNegative = true;   v = -v;  }  int IValue = 1;  for (int i = 1; i <= x; i++)  {   IValue = IValue * 10;  }  double Int = Math.Round(v * IValue + 0.5, 0);  v = Int / IValue;  if (isNegative)  {   v = -v;  }  return v;}

經過簡單的測試,上面的函數能實現對數據的四舍五入法。

Math.Round ()在四舍五入時有個問題: 

Math.Round(2.5,0) = 2; Math.Round(3.5,0) = 4;

2.5應該等于3才對!

在ASP中也存在這個問題,不過ASP中還有個FormatNumber可以用,但目前還不知道怎么使用?

解釋:

Math.Round()準確的說,這個函數不是四舍五入,而是四舍六入五湊偶,就是說小于4或大于6的該舍該入是沒有爭議的,而5處在正中間,如果四舍五入則會造成數據的整體偏差,所以采取的原則是:如果舍入位為5,則舍入后最后一位為偶數,這是國際慣例。

現在做的項目都要5入,解決方法:

目前做法是:

如:(3.45*10+0.5)取整,再除以10

C# 中沒有四舍五入函數,事實上我知道的程序語言都沒有四舍五入函數,因為四舍五入算法不科學,國際通行的是 Banker 舍入法 Banker 's 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 枚舉

此枚舉有兩個成員:

AwayFromZero 當一個數字是其他兩個數字的中間值時,會將其舍入為兩個值中絕對值較大的值。

ToEven 當一個數字是其他兩個數字的中間值時,會將其舍入為最接近的偶數。

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

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

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

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

double ChinaRound(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);  } } 

有些時候不一定要用四舍五入的,可能需要上取整或下取整:

Math.Ceiling()和Math.Floor

Math.Ceiling(3.1)=4; Math.Floor(3.9)=3;

取天板值與地板值,與"四舍五入"無關。其實Floor的結果與(int)相同,因此也可以這樣寫Math.Floor((double)2/3+0.5)

floor 和 ceil是math unit 里的函數,使用前要先 Uses Math。

trunc 和 round 是system unit 里的函數,缺省就可以用。

floor 直接往小的取,比如 floor(-123.55)=-124,floor(123.55)=123

trunc 直接切下整數,比如 trunc(-123.55)=-123, floor(123.55)=123

ceil 直接往大的取,比如 ceil(-123.55)=-123, ceil(123.55)=124

round 計算四舍五入,比如 round(-123.55)=-124,round(123.55)=124

C#取整函數向上取整實例

int a = 5; int b = 2; lbl.Text = Convert.ToString(Math.Ceiling((double)a / (double)b)); 

希望本文所述對大家C#程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产成人激情小视频| 4p变态网欧美系列| 欧美成人午夜激情视频| 狠狠综合久久av一区二区小说| 久久精品色欧美aⅴ一区二区| 1769国内精品视频在线播放| 国产精品精品久久久| 国产97在线播放| 成人网在线视频| 国产精品1区2区在线观看| 日韩av在线网页| 亚洲国产精品一区二区久| 中文一区二区视频| 高清欧美性猛交| 性视频1819p久久| 中文字幕欧美日韩va免费视频| 91色视频在线观看| 国产免费一区二区三区香蕉精| 亚洲深夜福利在线| 亚洲福利在线视频| 国产激情久久久| 国产精品国产自产拍高清av水多| 成人免费福利在线| 俺去了亚洲欧美日韩| 亚洲精品美女久久久久| 国产精品视频99| 国产精品久久久久久av下载红粉| 日韩的一区二区| 日韩一区视频在线| 91亚洲精品视频| 国产99久久精品一区二区| 欧美日韩在线免费| 欧美激情视频网| 国产精品激情av电影在线观看| 日韩欧美在线视频日韩欧美在线视频| 精品日韩美女的视频高清| 一区二区三区高清国产| 日韩风俗一区 二区| 国产精品99蜜臀久久不卡二区| 欧美黄色三级网站| 日韩激情av在线播放| 国产一区二区三区三区在线观看| 日韩在线视频播放| 国产激情久久久| 久久人人爽人人爽人人片亚洲| 亚洲影院色在线观看免费| 91九色精品视频| 日韩电影中文字幕| 欧美性色xo影院| 一区二区三区动漫| 亚洲欧洲午夜一线一品| 色偷偷综合社区| 一区二区日韩精品| 欧美激情一二三| 国产欧美在线看| 九九精品视频在线| 久久免费视频在线| 国产欧美日韩丝袜精品一区| 高清欧美性猛交| 国产在线视频2019最新视频| 久久久久这里只有精品| 亚洲精品日韩激情在线电影| 三级精品视频久久久久| 成人精品在线观看| 欧美在线观看网址综合| 国产在线视频2019最新视频| 亚洲偷欧美偷国内偷| 日韩精品在线免费| 亚洲第一页中文字幕| 国产脚交av在线一区二区| 亚洲一区二区三区sesese| 亚洲国产日韩精品在线| 国产免费观看久久黄| 亚洲一区二区福利| 欧美电影《睫毛膏》| 久久九九全国免费精品观看| 91国语精品自产拍在线观看性色| 日韩精品视频免费| 国产精品自拍小视频| 国产丝袜一区二区三区免费视频| 国产69精品99久久久久久宅男| 成人xvideos免费视频| 国产在线视频一区| www.色综合| 91精品国产自产在线| 亚洲美女av黄| 欧美成人国产va精品日本一级| 91久久精品国产91久久| 日韩av免费在线| 日韩欧美亚洲范冰冰与中字| 国产成人精品久久二区二区| 理论片在线不卡免费观看| 久久精品国产v日韩v亚洲| 国产亚洲精品久久久| 亚洲欧美国产精品va在线观看| 欧美床上激情在线观看| 久久99精品视频一区97| 欧美丰满老妇厨房牲生活| 久久久久久久激情视频| 国产精品自产拍高潮在线观看| 欧美日韩国产精品专区| 亚洲自拍偷拍一区| 亚洲第五色综合网| 欧美老妇交乱视频| 欧美极度另类性三渗透| 91精品国产综合久久香蕉922| 国产69精品久久久久久| 亚洲国产成人一区| 色综合久久精品亚洲国产| 欧美日韩成人在线播放| 久久久久久97| 久久国产精品久久久久久久久久| 亚洲第一偷拍网| 国产999精品久久久影片官网| 亚洲自拍另类欧美丝袜| 亚洲成年人在线| 色综合91久久精品中文字幕| 69av视频在线播放| 国产91精品黑色丝袜高跟鞋| 成人xvideos免费视频| 亚洲欧美综合区自拍另类| 国产精品福利观看| 欧美疯狂做受xxxx高潮| 国产精品扒开腿做爽爽爽的视频| 亚洲国产欧美一区二区三区同亚洲| 色噜噜久久综合伊人一本| 欧美日本亚洲视频| 亚洲片av在线| 欧美高清理论片| 成人www视频在线观看| 欧美黑人巨大xxx极品| 97在线日本国产| 日韩美女在线观看一区| 国产成人精品日本亚洲专区61| 国产精品视频免费在线观看| 国产精品成人在线| 欧美伊久线香蕉线新在线| 国产91在线播放九色快色| 国产香蕉精品视频一区二区三区| 国产91精品高潮白浆喷水| 亚洲最大中文字幕| 青青草成人在线| 中文国产成人精品久久一| 欧美在线欧美在线| 久久深夜福利免费观看| 国产欧美日韩精品丝袜高跟鞋| 亚洲天堂男人天堂女人天堂| 欧美国产日韩精品| 91精品国产乱码久久久久久久久| 欧美怡春院一区二区三区| 日韩欧美成人精品| 96精品视频在线| 色七七影院综合| 日韩精品高清在线| 日韩欧美黄色动漫| 宅男66日本亚洲欧美视频| 日韩av在线网站| 国产精品一区二区女厕厕| 国产精品成久久久久三级| 在线精品视频视频中文字幕| 国产精品久久久久久久久久东京| 亚洲精品日韩激情在线电影| 亚洲天堂一区二区三区| 亚洲自拍在线观看|