【发布时间】:2016-07-13 13:17:16
【问题描述】:
我在 vb.net 中有一个用于正确数学舍入的内置函数吗?
例如,下面的两个函数都返回 14.00,但它们应该返回 14.01:
Math.Round(14.004999, 2, MidpointRounding.AwayFromZero)
Decimal.Round(14.004999, 2, MidpointRounding.AwayFromZero)
还有其他方法可以进行适当的数学舍入吗?
【问题讨论】:
-
为什么你认为答案应该以 .01 结尾?您正在四舍五入到小数点后三位,小数点后三位是 4。
-
如果你期望它总是因为
AwayFromZero而四舍五入,请注意枚举的名称 -MidpointRounding,它只适用于正好是中间的值 - 舍入否则可以作为平常 -
我不希望总是四舍五入。但我希望整个数字都被考虑在内。所以在我的例子中,9 将被结转,所以整个舍入过程将是这样的:14.004999 -> 14.005 -> 14.01 我希望我现在让自己有点清醒:)
-
这不是四舍五入的工作方式。
.004999小于0.005,所以会向下取整。 -
你是对的。猜猜我在财务计算上的时间太长了,忘记了真正的数学是如何工作的:D