カウンターを0.05インクリメントする必要がある関数をRで記述しています。カウンターの値を条件にすると、値が表示されているものではないと言われます。
例:
カウンターを0に設定します
cntr <-0; cntr;
[1] 0
カウンターを0.05インクリメントし、テストします
cntr <-cntr + 0.05; cntr; [1] 0.05
> cntr == 0.05
[1] TRUE
ここまでは順調ですね。しかし、さらに2、3回繰り返すと、次のことが起こります。
> cntr <- cntr + 0.05; cntr;
[1] 0.1
> cntr == 0.1
[1] TRUE
> cntr <- cntr + 0.05; cntr;
[1] 0.15
> cntr == 0.15
[1] FALSE
何が起こっているのか、そしてその理由は?cntrに返される値は0.15ですが、この値と等しくありませんか?さらなる調査により、これが明らかになりました。
> cntr < 0.1500000000000001
[1] TRUE
> cntr < 0.15000000000000001
[1] FALSE
と
round(cntr、2)== 0.15 [1] TRUE
私は何かを誤解していますか、それとも私が見ていない何かがありますか?どんな助けでも大歓迎です。ありがとうございました。