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

2021-06-30 10:06

阅读:479

标签:重载方法   情况   rom   参数   转换   问题   实现   源码   常用方法   

技术分享图片

 

 

 

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

Why??

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

技术分享图片

 

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

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

其中

技术分享图片

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

技术分享图片

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

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

例如 如下一段代码:

技术分享图片

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

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

 

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

标签:重载方法   情况   rom   参数   转换   问题   实现   源码   常用方法   

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


评论


亲,登录后才可以留言!