Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当对象[sqrt 2^2]==2时,R不返回true_R_Object_Logical Operators - Fatal编程技术网

当对象[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
阅读

顺便说一下,也有类似的例子