■ 最新の投稿

コラム~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

“コラム~VBA計算時の誤差との戦い” への3件のフィードバック

  1. Good way of telling, and nice post to take data about my
    presentation subject matter, which i am going to convey in university.

  2. What’s up friends, how is everything, and what you want to say on the topic of this piece of
    writing, in my view its in fact amazing in support of me.

コメントを残す

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