信じ難い欠陥ですが、Excelや計算ソフトのほとんどは小数を含む計算が苦手なのです。
理由はというと、正確な事はちょっとわかりませんけどコンピュータが0と1の二進数であるということが原因らしいです。 |
試しに次のプログラムを実行してみましょう。
変数xに1.5 + 1.4の結果を格納してワークシートに表示します。
Sub test()
Dim x As Single
x = 1.5 + 1.4
Cells(1, 1).Value = x
End Sub
ワークシートには右のように表示されました。
変数xの値は1.5 + 1.4で2.9となるはずですが、2.90000009536743と微妙な誤差が出てしまいました。
ではいくつか対応策を紹介します。 |
|
 |
対策1.為替データを整数の状態にしておく
「主要通貨日足データ」に載せてあるデータは、EUR/USDのデータは10000倍にして、その他の通貨は100倍にして整数の状態で載せてありますので、このまま計算してしまえば問題無いと思います。
対策2.変数のデータ型をうまく使う それでも途中でどうしても小数の計算をしなければならなくなった場合は、例えば「2.90000009536743」ならば10倍にしてから「Integer」「Long」(正数)の変数に格納して、表示する時に10分の一にすれば誤差は消えます。もしくは「Currency」(通貨型)を使った変数に格納すれば小数第4位までしか格納できないので誤差が消えます。
対策3.無視する
そもそも為替データ自体が取引業者によって数銭程度の違いがあるわけですから多少の誤差は気にしないというのも一つの手です。しかし見た目が悪いので出来るだけ直した方がいいですよね。 |
|