首页 C#四舍五入、上取整、下取整

C#四舍五入、上取整、下取整

举报
开通vip

C#四舍五入、上取整、下取整在处理一些数据时,我们希望能用“四舍五入”法实现,但是C#采用的是“四舍六入五成双”的方法,如下面的例子,就是用“四舍六入五成双”得到的结果:doubled1=Math.Round(1.25,1);//1.2doubled2=Math.Round(1.24,1);//1.2doubled3=Math.Round(1.26,1);//1.3doubled4=Math.Round(1.35,1);//1.4为了用C#来实现“四舍五入”,我写了下面的函数:代码/// ///实现数据的四舍五入法 /// ///要进行处理的...

C#四舍五入、上取整、下取整
在处理一些数据时,我们希望能用“四舍五入”法实现,但是C#采用的是“四舍六入五成双”的方法,如下面的例子,就是用“四舍六入五成双”得到的结果:doubled1=Math.Round(1.25,1);//1.2doubled2=Math.Round(1.24,1);//1.2doubled3=Math.Round(1.26,1);//1.3doubled4=Math.Round(1.35,1);//1.4为了用C#来实现“四舍五入”,我写了下面的函数:代码/// ///实现数据的四舍五入法 /// ///要进行处理的数据///保留的小数位数///四舍五入后的结果privatedoubleRound(doublev,intx){boolisNegative=false;//如果是负数if(v<0){isNegative=true;v=-v;}intIValue=1;for(inti=1;i<=x;i){IValue=IValue*10;}doubleInt=Math.Round(v*IValue0.5,0);v=Int/IValue;if(isNegative){v=-v;}returnv;}经过简单的测试,上面的函数能实现对数据的四舍五入法。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*100.5)取整,再除以10C# 中没有四舍五入函数,事实上我知道的程序语言都没有四舍五入函数,因为四舍五入算法不科学,国际通行的是 Banker 舍入法 Banker 's rounding(银行家舍入)算法,即四舍六入五取偶。事实上这也是 IEEE  规定 关于下班后关闭电源的规定党章中关于入党时间的规定公务员考核规定下载规定办法文件下载宁波关于闷顶的规定 的舍入 标准 excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载 。因此所有符合 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/30.5)floor 和 ceil是math unit 里的函数,使用前要先 Uses Math。trunc 和 round 是system unit 里的函数,缺省就可以用。floor 直接往小的取,比如 floor(-123.55)=-124,floor(123.55)=123trunc 直接切下整数,比如 trunc(-123.55)=-123, floor(123.55)=123ceil 直接往大的取,比如 ceil(-123.55)=-123, ceil(123.55)=124round 计算四舍五入,比如 round(-123.55)=-124,round(123.55)=124C#取整函数向上取整实例int a = 5; int b = 2;  lbl.Text = Convert.ToString(Math.Ceiling((double)a / (double)b)); 
本文档为【C#四舍五入、上取整、下取整】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_266065
暂无简介~
格式:doc
大小:17KB
软件:Word
页数:5
分类:
上传时间:2022-01-14
浏览量:37