为什么Math.Round对于相同的方程式给出不同的值?

时间:2019-07-23 11:33:21

标签: asp.net vb.net math

我正在使用Math.Round函数将精度以3位数字四舍五入的十进制数字,但是对于某些方程式,它给出了错误的结果。下面给出的代码给了我错误的结果。它给出了 1.428 < / strong>,但预期结果为 1.429

Math.Round(28.57 * 5.0 / 100, 3, MidpointRounding.AwayFromZero)

通过将5.0 / 100放在方括号中,我得到了正确的答案。下面给出的代码为 1.429

Math.Round(28.57 * (5.0 / 100), 3, MidpointRounding.AwayFromZero)

我不明白为什么会这样发生。你能解释一下吗?

1 个答案:

答案 0 :(得分:1)

通常,浮点数可能没有数字的“精确”表示形式,因此会降低精度。

以您的示例为例,如果您尝试将两个表达式中的值相减,则会得到非常小的结果。

enter image description here