Jef*_*eff 12 .net vb.net rounding
我在.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
Run Code Online (Sandbox Code Playgroud)
我只是想检查以前是否有人遇到过这个问题?
现在我已经通过将数字转换为小数来解决了这个问题.我已将代码更改为此,现在工作正常:
Math.Round(CDec(34.425), 2, MidpointRounding.AwayFromZero) = 34.43
Run Code Online (Sandbox Code Playgroud)
我只是在寻找原因,为什么我的旧代码不起作用.
谢谢!
将代码更新为正确的AwayFromZero
cod*_*nix 20
浮点从来都不是确切的,可以34.425具有内部represantation 34.4249999999999 ..这将四舍五入至34.42.
如果您需要数字的精确表示,请使用decimal类型.
| 归档时间: |
|
| 查看次数: |
3201 次 |
| 最近记录: |