项目有个评分功能,客户可以对购买的应用评分,评分要求保留一位小数。
测试:评分有bug
测试:用户A
对应用a
评 0.5,用户B
对 应用a
评 2,应用a
的 评分:(0.5+2)/2=1.25,评分应该是1.3
,但评分显示的是 1.2
。
我:好的,我看下
项目使用 Math进行的四舍五入,怎么会有问题?
项目代码:
return Math.Round(score, 1);
测试 Math 对第二位小数是5四舍五入的情况:
发现0.15与0.25的结果都是0.2
发现Math.Round()
方法第三个参数是一个枚举 MidpointRounding
·,默认为 ToEven
Math.Round()
将枚举使用为MidpointRounding.AwayFromZero
,解决bug:
return Math.Round(score, 1,MidpointRounding.AwayFromZero);