2012年12月8日土曜日

[ExcelVBA] 浮動小数点問題


アドベントカレンダー 8日目

たまには、こんなネタも。
45.2 - 38.8 はいくつでしょうか?
では、計算してみましょう。
Option Explicit

Sub SampleCode()
    Dim a As Double
    Dim b As Double
    
    a = 45.2
    b = 38.8
    
    Debug.Print a - b
End Sub

結果は
6.40000000000001
です。

こんなに簡単んそうな計算結果でも誤差が出てしまいます。
これは、IEEE 754という数値計算の標準規格を利用しているものなら
全て発生する問題だそうで、詳細を知りたい場合は以下サイトなんかを
眺めるとよいと思います。

第4回 演算誤差の正体

0 件のコメント: