計算した数値が整数か小数かを判定させようと思って書いたコードが思いがけない結果を返した。
サンプルコード
MsgBox 6.1 - 0.1
MsgBox Int(6.1 - 0.1)
結果は、
6
5
内部的には、6.1 - 0.1 = 5.9999.....という感じなのだろうか?
ちなみに、
MsgBox Int(6.2 - 0.2)
などとすると、ちゃんと Int(x) も 6 を返す。どうやら 0.1 のときだけそうなるように見える。ちなみに、Int() だけでなく、Fix() でも同様のことが起きる。したがって、6.1 - 0.1 と 6.2 - 0.2 の値の扱い方が異なっているのではないかと思うのだが、そうなる理由が分からない。