当对象[sqrt 2 ^ 2] == 2时,R不返回true

时间:2016-10-12 06:53:58

标签: r object logical-operators

我知道运行一个简单的行如sqrt(2) ^ 2 == 2将返回FALSE,但是当我使用等式的左边部分创建一个对象时,它返回值2,但是在逻辑上将对象与数字进行比较时2,我还是假的。这似乎是错误的。这是代码:

> (root.of.2 <- sqrt(2))
[1] 1.414214
> (root.of.2.sqrd <- sqrt(2) ^ 2)
[1] 2
> (root.of.2.sqrd == 2)
[1] FALSE

这里发生了什么?

2 个答案:

答案 0 :(得分:3)

仔细观察你的变量:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<script src="https://code.jquery.com/jquery-3.0.0.min.js"></script>

<div id="Outside">
  <div id="Box"></div>
</div>

root.of.2.sqrd是数字。

> print(root.of.2.sqrd,18)
[1] 2.0000000000000004

阅读FAQ 7.31

顺便说一下,有类似的questions

答案 1 :(得分:1)

它们是不同的数字(sqrt(2)在某个时间点是不合理的,一些数值不准确,无论多么小,都会用它的有理逼近引入):

print(sprintf('%.20f', 2))
#[1] "2.00000000000000000000"
print(sprintf('%.20f', sqrt(2) ^ 2))
#[1] "2.00000000000000044409"