当对象[sqrt 2^2]==2时,R不返回true
我知道运行一个简单的行,比如当对象[sqrt 2^2]==2时,R不返回true,r,object,logical-operators,R,Object,Logical Operators,我知道运行一个简单的行,比如sqrt(2)^2==2,会返回FALSE,但是当我用等式的左边部分创建一个对象时,它会返回值2,但是在逻辑上将该对象与数字2进行比较时,我仍然会得到FALSE。这似乎是错误的。代码如下: > (root.of.2 <- sqrt(2)) [1] 1.414214 > (root.of.2.sqrd <- sqrt(2) ^ 2) [1] 2 > (root.of.2.sqrd == 2) [1] FALSE >(root.of.2(r
sqrt(2)^2==2
,会返回FALSE,但是当我用等式的左边部分创建一个对象时,它会返回值2,但是在逻辑上将该对象与数字2进行比较时,我仍然会得到FALSE。这似乎是错误的。代码如下:
> (root.of.2 <- sqrt(2))
[1] 1.414214
> (root.of.2.sqrd <- sqrt(2) ^ 2)
[1] 2
> (root.of.2.sqrd == 2)
[1] FALSE
>(root.of.2(root.of.2.sqrd)(root.of.2.sqrd==2)
[1] 假的
这里发生了什么?它们是不同的数字(sqrt(2)在某个时间点是无理的,一些数值误差,无论多么小,都将通过有理近似引入):
它们是不同的数字(sqrt(2)在某个时间点是无理的,一些数值误差,无论多么小,都将通过其有理近似引入):
仔细查看您的变量:
> print(root.of.2.sqrd,18)
[1] 2.0000000000000004
根.of.2.sqrd是数字
> as.integer(root.of.2.sqrd)==2
[1] TRUE
阅读
顺便说一句,也有类似的情况。仔细看看您的变量:
> print(root.of.2.sqrd,18)
[1] 2.0000000000000004
根.of.2.sqrd是数字
> as.integer(root.of.2.sqrd)==2
[1] TRUE
阅读
顺便说一下,也有类似的例子