你好,欢迎访问我的博客!登录
当前位置:首页 - 技术 - 正文 君子好学,自强不息!

c#四舍五入保留两位小数上取整、下取整的一些技巧

2018-06-22 11:02:01技术admin68°c
A+ A-

c#四舍五入方法

在处理一些数据时,我们希望能用“四舍五入”法实现,但是C#采用的是“四舍六入五成双”的方法,如下面的例子,就是用“四舍六入五成双”得到的结果:

double d1 = Math.Round(1.25, 1);//1.2

double d2 = Math.Round(1.24, 1);//1.2

double d3 = Math.Round(1.26, 1);//1.3

double d4 = Math.Round(1.35, 1);//1.4

C#数字取整,四舍五入方法

1、向上进位取整。Math.Ceiling      例如: Math.Ceiling(32.6)=33; Math.Ceiling(32.0)=32; 

2、向下舍位取整。Math.Floor      例如: Math.Floor(32.6)=32;  

3、按指定位数的小数进行四舍五入。

Math.Round      例如:Math.Round(36.236,2)=36.24; Math.Round(36.232,2)=36.23; 

若采取这种默认的只填一个数值的方式, 根据framework框架的不同,得到的结果也不尽相同, 在framework4.0中, 这种操作不符合中国人认为的四舍五入规范.应按如下进行参数设置:

 Math.Round(ToDecimal(36.456, 1, MidpointRounding.AwayFromZero).ToString();

得到的结果就是36.5, 否则, 则是36.4. 

4、取指定数字在使用指定底时的对数。Math.Log      例如:一本16开的书,计算对开了几次。Math.Log(16,2)=4;

c#四舍五入保留两位小数

1 Math.Round(45.367,2)     //Returns   45.37

2 Math.Round(45.365,2)     //Returns   45.36

 C#中的Round()不是我们中国人理解的四舍五入,是老外的四舍五入,是符合IEEE标准的四舍五入,具体是四舍六入,下面的才是符合中国人理解的四舍五入

1 Math.Round(45.367,2,MidpointRounding.AwayFromZero);     //Returns   45.37

2 Math.Round(45.365,2,MidpointRounding.AwayFromZero);     //Returns   45.37   

备注:根据网在留言板反馈,传入的参数如果是double类型的,其实得到的结果还是不会四舍五入(double精度不够导致的)

所以上面的更严谨的写法应该是:将传入的参数默认转换为decimal类型,确保其在四舍五入之前精度不会降下来。因为decimal精度高于double

最终版:

1 Math.Round(Convert.ToDecimal(45.367),2,MidpointRounding.AwayFromZero);     //Returns   45.37

2 Math.Round(Convert.ToDecimal(45.365),2,MidpointRounding.AwayFromZero);     //Returns   45.37   

  选择打赏方式
微信赞助

打赏

QQ钱包

打赏

支付宝赞助

打赏

  选择分享方式
  移步手机端
c#四舍五入保留两位小数上取整、下取整的一些技巧

1、打开你手机的二维码扫描APP
2、扫描左则的二维码
3、点击扫描获得的网址
4、可以在手机端阅读此文章
标签:

发表评论

选填

必填

必填

选填

请拖动滑块解锁
>>


  用户登录