2013年1月12日土曜日

【VB6】Doubleが正しく計算されない。

VB6のDoubleは小数点以下が正しく計算されない場合あるみたいですね。マジはまった。。。

例えば下記のような場合です。

Dim dblTemp As Double

dblTemp = 0.01

dblTemp = CDbl(Int(dblTemp * 100)/100)

debug.print dblTemp


上記は少数第3位を切り捨てる処理をやっているのですが、なぜか0になってしまいます。どう考えても0.01しかないだろと。。。



てことで他の言語のDoubleなどと同じ発想で処理をやるとハマってしまいます。VB6で、少数以下を正しく計算する場合は、Currencyを使えとのことです。



なので、上記を修正をすると下記のようになります。



Dim curTemp As Currency

curTemp = 0.01

curTemp = CDbl(Int(curTemp * 100)/100)

debug.print curTemp


これで正しく計算されました。



しかし今となっては考えられないことですね。



それだけ古いということでしょうか。



しかし、まだまだVB6が稼動しているシステムは多く、Win8でも動作するとのこと。



きっとMicrosoftは一生サポートし続けないといけないでしょうw

0 件のコメント: