■ 最新の投稿

コラム~VBA計算時の誤差との戦い

Tea Time ちょっとひと息いれよう

次のVBAを見て頂きたい。

Sub test()

    If 1.23 + 4.56 = 5.79 Then
    
        MsgBox "一致", vbOKOnly
    
    Else
    
        MsgBox "不一致", vbOKOnly
    
    End If

End Sub

実行すると『不一致』となります!!

これは、VBAでは小数点以下を含む数値計算において

浮動小数点演算の誤差

と呼ばれる現象が原因です。

これはコンピュータが 2進数で小数を表現 するため、一部の数値は正確に表せず、微小な誤差が生じるためです。

一見、計算が完璧に思えるコンピューターですが、内部では小数を「近い値」に丸めて処理しているため、必ずしも正確な計算ができるとは限りません。これは無理数に限らず、一般的な小数計算でも起こります。

次のプログラムを見てください。
通常、1.23+4.56=5.79 になるのは明らかですが、実際にプログラムを実行すると 「不一致」 という結果が表示されます。

なかなかにひどい結果ですよね。

何を信じて計算する? (笑)


Comments

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です