我正在测试一个产品折扣为10%的系统,这意味着折扣为102.555,但是该系统仅使用2个小数位,因此它给出了102.55。
问题是如果我执行此操作:
Math.Round(102.555, 2, MidpointRounding.AwayFromZero)
输出为:102.56
如果执行此命令:
Math.Round(102.555, 2, MidpointRounding.ToEven)
输出也是102.56。
我在所有情况下都使用Math.Round方法,直到出现这种情况。
我究竟做错了什么?
为什么102.555使用MidpointRounding.AwayFromZero返回102.56?
我该怎么做才能从102.555返回102.55?
最佳答案
为什么102.555使用MidpointRounding.AwayFromZero返回102.556?
我假设“ 102.556”在此处应为“ 102.56”。
因为MidpointRounding
表示在四舍五入以基数10进行四舍五入的有效数字(即最后一个消失的数字)为5
的数字时会发生什么。您的数字102.555
就是这种情况,因此在四舍五入到小数点后两位时,有两个选项:
102.55
102.56MidpointRounding.AwayFromZero
选择距离零更远的选项-在这种情况下(因为它们是正数),较大的选项即102.56
。
关于c# - 如何将102.555舍入为102.55?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41702421/