为什么用 Excel VBA 减去两个数字时会出现小数错误?

Why do I get a decimal error when I substract two numbers with Excel VBA?

我做了一个简化的例子来说明我的问题。当用一个数字减去另一个数字时,我得到一个错误的结果。我可以用 2 位小数舍入结果,但这更像是一种解决方法。

Sub Test()
    Dim Sale As Double
    Dim Fee As Double
    Dim Payment As Double
    Payment = 104953.98
    Sale = 105000
    Fee = Sale - Payment
End Sub

立即测试代码 window 显示费用计算为 46,0200000000041,这是错误的。

如果您出于某种原因需要它们是双精度数,请在计算之前将它们转换为小数:

Fee = CDec(Sale) - CDec(Payment)

Type Conversion Functions

根据您可能想尝试的变量命名

Sub Test()
    Dim Sale As Currency
    Dim Fee As Currency
    Dim Payment As Currency
    Payment = 104953.98
    Sale = 105000
    Fee = Sale - Payment
End Sub

您还应该继续阅读 Floating-point arithmetic and https://floating-point-gui.de/