2016-05-27 5 views
0

モジュロクエリの結果が奇妙です。たぶん誰かがそれのためのソリューションをしていますので、0.6が不足しているモジュロ計算がわかりません

[1] 0.0 NA 0.2 NA 0.4 NA NA NA 0.8 NA 1.0 

d <- seq(0.0,1.0,0.1) 
lab.y <- ifelse(((d*10) %% 2.0 == 0.0),d, NA) 

は結果が得られます。私は本当にここで何が起こっているか理解していないすべてのFALSEでも

d*10/2 
[1] 0.0 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0 

...

かかわらずである

ifelse((d*10/2 == 3.0), d, NA) 

は、私のようなクエリを追加しようとしました。

ありがとうございます!

+1

比較のために丸めを検討してください。 – Roland

答えて

1

これは浮動小数点エラーによるものです。これは完全一致ではなく絶対差が小さいことを確認する必要があります。これは0.6ではなく、0.6000000003または0.5999999997(一例)です。

ifelse((abs((d*10) %% 2)<0.000001), d, NA) 
+0

これは動作します、ありがとう! –

関連する問題