Excel-VBA中的计算不准确

Ita*_*tay -1 excel vba excel-vba

可能重复:
Excel VBA双重添加错误

我在Excel中有一个非常简单的VBA宏来计算两个数字之间的差异.当我尝试计算0.7和0.65之间的差值时,它返回4.99999999999999E-02.为什么?

这是我的功能:

Public Function Diff(x As Double, y As Double) As Double
    Diff = x - y
    Debug.Print Diff
End Function 
Run Code Online (Sandbox Code Playgroud)

这是我在'立即'窗口中看到的内容:

4.99999999999999E-02 
Run Code Online (Sandbox Code Playgroud)

要复制这个"错误",你可以在立即窗口中输入"?0.7-0.65",看看你得到了什么.

Lor*_*ter 5

浮点表示只是近似值 - 不可能以二进制形式存储任意小数部分.谷歌针对某些背景和示例的"浮点错误",或者查看有关浮点的维基百科文章