【发布时间】:2022-01-20 04:44:25
【问题描述】:
这是我在 R 中找到的:
> "20" < 3
[1] TRUE
> "20" < 2
[1] FALSE
我试图找出“20”的确切数字。所以基本上,“20”在 2.99999999999999489 和 2.99999999999999490 之间,这是为什么呢?
此外,“200”和“2000”(等等......)与“20”具有相同的范围,但有线的东西是 R 给了我这个:
> "20" == "200"
[1] FALSE
> "200" == "2000"
[1] FALSE
我相信它们不一样,但是 R 将它们存储在不同的数字中,范围为“20”。所以除了为什么之外,我更好奇R如何将字符存储在数字中,我的意思是如果“200”和“2000”是2.999999999999999489和2.999999999999999490之间的不同数字,那么它们之间有多少个数字? (我知道实数是无限的,但必须有一个 R 决定结束的数字)
【问题讨论】:
-
字符串的比较是逐个字符进行的,直到发现不等式。也就是说,
"2" > "10"为真,因为"2" > "1"为真,并且它停止了。在您的第一种情况下,"2"与"3"进行比较,发现“小于”,因此它以真值停在那里。在您的第二种情况下,"20" < 2,它检查"2"和"2"并发现它们相等,然后检查"0"和<nothing>,这是不正确的,所以它返回错误(无法进行更多比较)。