这不是一个问题。我想介绍 R 中几乎没有记录的部分。
a <- 0.3-0.1 # should be 0.2
b <- 0.7-0.5 # should also be 0.2
然而,由于浮点表示,
a==b
[1] FALSE
从文档中,有两种正确的布尔检查相等性的方法:
isTRUE(all.equal(a,b))
identical(all.equal(a,b), TRUE)
不是很明显的是,如果要检查一个结构中的所有>
, <
,则必须在其他两个测试之前进行相等性测试。由于 要么或可以不可预测地变成 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"
我希望这将有所帮助。
亲切的问候,卢卡