我有一个内置函数在vb.net中进行适当的数学舍入?
例如,以下两个函数都返回14.00,但它们应返回14.01:
Math.Round(14.004999, 2, MidpointRounding.AwayFromZero)
Decimal.Round(14.004999, 2, MidpointRounding.AwayFromZero)
有没有其他方法可以进行适当的数学舍入?
这将产生预期的结果,但......
Dim somedata As Double = 14.004999
Dim outd As Double
outd = Math.Round(somedata, 3)
outd = Math.Round(outd, 2, MidpointRounding.AwayFromZero)
将1/2美分加到计算中:
Dim x As Decimal = 14.004999D
Dim y as Decimal = Decimal.Round(x + 0.005D, 2, System.MidpointRounding.AwayFromZero)
一定要在金融数学中使用Decimal
类型而不是Double
类型。
你想要的是天花板,而不是四舍五入。
Dim d As Decimal = 14.004999
Dim r As Decimal = Math.Ceiling(d * 100D) / 100D