请考虑以下代码:
Dim doubleResult = (21 / 88) * 11
Dim decimalResult = Decimal.Divide(21, 88) * 11
doubleResult
是2.625,应该如此。
decimalResult
是2.6249999999999996,因此当将此四舍五入到小数点后两位时,结果会不正确。
当我将作业更改为:
时 Dim decimalResult = Decimal.Divide(21 * 11, 88)
结果是2.625!
我们在我们的应用程序中采用了十进制类型,希望它能提高我们的准确性(这是一个得分程序,其中得分最多可以在小数分隔符后面一位数)。但是,似乎十进制类型只是在其他计算上给出了比double类型稍微不正确的结果,因为它基于十个而不是两个基础。
那么,我们如何处理这些特性以避免如上所述的舍入错误?
答案 0 :(得分:0)
中点舍入的示例
Dim adec As Decimal = 231D
adec /= 88D
adec = Math.Round(adec, 2, MidpointRounding.AwayFromZero)