これは問題ではありません。Rのほとんど文書化されていない部分をカバーしたいと思います。
a <- 0.3-0.1 # should be 0.2
b <- 0.7-0.5 # should also be 0.2
ただし、浮動小数点表現のため、
a==b
[1] FALSE
ドキュメントから、同等性をブールチェックする2つの正しい方法があります。
isTRUE(all.equal(a,b))
identical(all.equal(a,b), TRUE)
すぐにはわからないのは、1つの構造>
で<
、、のすべてをチェックしたい場合は、他の2つのテストの前に同等性のテストを実行する必要があるということです。浮動小数点の数値のあいまいさのために、またはのいずれかが予期せずにTRUEになる可能性があるためです。==
if .. else if .. else if
a > b
a < b
望ましくない動作の例:
if (a < b)
{
print('a smaller than b')
} else if (a > b) {
print('a greater than b')
} else if (isTRUE(all.equal(a,b))) {
print('a equal b')
}
[1] "a smaller than b"
これがお役に立てば幸いです。
よろしく、ルカ