【发布时间】:2011-04-27 13:09:05
【问题描述】:
我在 .Net 内部有一个舍入问题。
我将一个 3 位数的数字四舍五入为两位数,这会导致一个数字出现一些问题。
如果我尝试将 34.425 舍入到小数点后两位,它应该舍入到 34.43。我正在使用 roundawayfromzero 选项,它对程序中的每个数字都有效,除了这个。
代码 Math.Round(34.425, 2, MidpointRounding.AwayFromZero) 应该等于 34.43,但它等于 34.42。
如果我尝试使用任何其他号码,它会正常工作。
Math.Round(34.435, 2, MidpointRounding.AwayFromZero) = 34.44
Math.Round(34.225, 2, MidpointRounding.AwayFromZero) = 34.23
Math.Round(34.465, 2, MidpointRounding.AwayFromZero) = 34.47
我只是想看看有没有人遇到过这个问题?
目前我已通过将数字转换为小数来解决此问题。我已将代码更改为此,现在可以正常工作:
Math.Round(CDec(34.425), 2, MidpointRounding.AwayFromZero) = 34.43
我只是在寻找我的旧代码不起作用的原因。
谢谢!
将代码更新为正确的 AwayFromZero
【问题讨论】: