C# 四舍五入中一处易错点
,你没看错,四舍五入的结果 和我们期待的不太一样
Why??
进入源码看下,注释中解释的很清楚。。
默认情况下,Math.Round()方法返回的是最接近的整数,这个没问题,问题是当要转换的数据在 两个整数之间时即 0.5时,这个方法默认会返回两个整数中的偶数,并不是我们认为的0.5就进位
如果我们需要实现四舍五入 我们看它的几个重载方法
其中
这个方法的参数MidpointRounding枚举 参数给出了当数据是两个整数之间的数值时,如果取整数
其中第二个,会舍入较小的那个整数,也就是取较大的值,这个正是我们所希望的,所以我们四舍五入时候 需要将这个参数加上,并且参数值设为 AwayFromZero
之前正没有仔细注意过,以后要多注意一些常用方法的重载,以防止出现类似的问题
例如 如下一段代码:
执行完转换后 id 的值是多少?
如果稍微不注意很容易认为是100,其实是0.out 是只传出 不管入的