【问题标题】:%in% on numeric values returns wrong result数值的 %in% 返回错误的结果
【发布时间】:2021-10-28 16:40:28
【问题描述】:

6969277959563657216 不是以下数字之一,但 %in% 返回 TRUE

6969277959563657216  %in% c(6972646901044805634,
                            6935914801507893250,
                            6930019021496532993,
                            6969277959563657217,
                            7005257783989764866)
[1] TRUE

这是为什么?

【问题讨论】:

标签: r hmisc


【解决方案1】:

原因是大多数计算机程序的工作精度约为。 16 位数字,请参阅常见问题解答7.31 Why doesn’t R think these numbers are equal? 和其中的链接。这里的解释当然是:“为什么 R 认为这些数字是相等的”。

例子:

6969277959563657216 == 6969277959563657217
[1] TRUE

更多关于这个也可以在 Wikipedia 和其他几个地方。

编辑:这里是关于大整数的 SO 帖子long/bigint/decimal equivalent datatype in R

【讨论】:

    猜你喜欢
    • 2021-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-24
    • 1970-01-01
    • 2015-05-12
    相关资源
    最近更新 更多