小编Jef*_*eff的帖子

.Net舍入问题

我在.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

.net vb.net rounding

12
推荐指数
1
解决办法
3201
查看次数

标签 统计

.net ×1

rounding ×1

vb.net ×1