-1

重複の可能性:
ExcelVBA二重加算エラー

2つの数値の差を計算する非常に単純なVBAマクロがExcelにあります。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 

[即時]ウィンドウに表示されるものは次のとおりです。

4.99999999999999E-02 

この「バグ」を複製するには、イミディエイトウィンドウに「?0.7-0.65」と入力して、何が返されるかを確認します。

4

1 に答える 1

5

浮動小数点表現は単なる概算であり、任意の小数を2進数で格納することはできません。いくつかの背景と例については「浮動小数点エラー」についてGoogleを参照するか、浮動小数点に関するウィキペディアの記事を参照してください。

于 2012-08-20T19:23:19.570 に答える