首页 > Windows开发 > 详细

C# 四舍五入中一处易错点

时间:2018-11-19 11:50:30      阅读:186      评论:0      收藏:0      [点我收藏+]

技术分享图片

 

 

 

,你没看错,四舍五入的结果 和我们期待的不太一样

Why??

进入源码看下,注释中解释的很清楚。。

技术分享图片

 

默认情况下,Math.Round()方法返回的是最接近的整数,这个没问题,问题是当要转换的数据在 两个整数之间时即 0.5时,这个方法默认会返回两个整数中的偶数,并不是我们认为的0.5就进位

如果我们需要实现四舍五入 我们看它的几个重载方法

其中

技术分享图片

这个方法的参数MidpointRounding枚举 参数给出了当数据是两个整数之间的数值时,如果取整数

技术分享图片

其中第二个,会舍入较小的那个整数,也就是取较大的值,这个正是我们所希望的,所以我们四舍五入时候 需要将这个参数加上,并且参数值设为  AwayFromZero 

之前正没有仔细注意过,以后要多注意一些常用方法的重载,以防止出现类似的问题

例如 如下一段代码:

技术分享图片

执行完转换后 id 的值是多少?

如果稍微不注意很容易认为是100,其实是0.out 是只传出 不管入的

 

C# 四舍五入中一处易错点

原文:https://www.cnblogs.com/yaoweijun/p/9982277.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!