AccessのVBAにて演算処理を行っていたところ、演算誤差が発生しました。
該当のコードではないですがその個所を抜粋したサンプルが以下になります。
vba
1Private Function test() 2 3 Dim item1 As String 4 Dim item2 As Single 5 Dim item3 As Single 6 7 item1 = "500" 8 item2 = 0.08 9 item3 = 5 10 11 Debug.Print 500 * 0.08 * 5 12 Debug.Print Val(item1) * item2 * item3 13 14End Function
調べてみると、演算誤差を発生させないように通貨型を使用した方が良い(?)との記事をみかけます。
実際に以下コードに修正すると演算誤差は発生しません。
vba
1Private Function test() 2 3 Dim item1 As String 4 Dim item2 As Currency 5 Dim item3 As Currency 6 7 item1 = "500" 8 item2 = 0.08 9 item3 = 5 10 11 Debug.Print 500 * 0.08 * 5 12 Debug.Print Val(item1) * item2 * item3 13 14End Function
今回初めてこのようなケースにでくわしたのですが、
小数点演算を行う場合、AccessのVBAでは通常Currency型を使うことがお決まりなのでしょうか。
(double型も問題なかったのですが、それは今回のケースではたまたまうまくいったということでしょうか。)

回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。