【发布时间】:2013-12-16 17:28:03
【问题描述】:
为什么 Math.Round(0.125, 2) 舍入为 0.12?
Dim foo As Decimal
foo = Math.Round(0.125, 2)
foo 现在是 0.12,但应该是 0.13
我听说这是因为 .Net 中的某些标准四舍五入到最接近的偶数,但这只是糟糕的数学。 12.5 将向下舍入为 12,但 13.5 将向上舍入为 14。有没有办法解决这个问题?
【问题讨论】:
-
仅供参考,这被称为“银行家四舍五入”。
-
这是银行家的四舍五入。使用带有 MidpointRounding 参数的 Round() 重载来更改它。