【VBA】小数以下の計算での演算誤差

2.645+0.001=2.646

とはならずに

2.645+0.001=2.6459999999999999998

となったりする。

有効桁数で丸める対策

Round関数で四捨五入して切りのいい数値にする。

Round(数値, 丸めたい桁数)

​​​​Round(2.6459999999999999998, 3)=2.646

'0.001ずつ増やした値を書き込む処理

Dim num As Single
num = Range("A1")

For i = 1 To 10
    Cells(i, 2) = Round(num, 3) 'ここで小数第三位に丸める
    num = num + 0.001 'ここで演算誤差が発生する場合あり
Next i
​

その他の方法

以下のサイトを参考に

VBAの小数以下の演算誤差について

コメントを残す

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

CAPTCHA