

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 になるのは明らかですが、実際にプログラムを実行すると 「不一致」 という結果が表示されます。

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


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


コメントを残す