对非常简单的“==”测试感到困惑

Confused on a very simple "==" test

提问人:Azdoul 提问时间:4/1/2020 最后编辑:DaBlerAzdoul 更新时间:4/2/2020 访问量:51

问:

这怎么可能?

> a=TC_df$temp[561]
> a
[1] 15.6
> a==15.6
[1] FALSE
> a=="15.6"
[1] TRUE
> class(a)
[1] "numeric"
r 相等

评论

2赞 Arthur Attout 4/1/2020
我很有信心这是一个浮点不准确,但出于恶意,你能指定这是哪种编程语言吗?

答:

1赞 DaBler 4/1/2020 #1

将数字与带有 == 运算符的字符串进行比较。请改用相同。

入手:

> a=15.60000000000001
> a
[1] 15.6
> a=="15.6"
[1] TRUE
> a==15.6
[1] FALSE

在您的例子中,一种这样的数字存储在变量中。a

控制打印数值时要打印的位数。现在将要打印的位数设置为 16:options(digits...)

> options(digits=16)
> a
[1] 15.60000000000001
> toString(a)
[1] "15.6"

你看到发生了什么吗?不会受到这个问题的影响。identical

评论

0赞 Azdoul 4/2/2020
哦,是的,谢谢!!我不知道:as.character(15.60000000000000000001)给出“15.6”这就是让我感到困惑的地方!非常感谢您的帮助!

上一个:'case_when()' 在 !=

下一个:三等号 R