小编psh*_*ddy的帖子

为什么 R 中的 as.integer 使值递减?

我正在做一个十进制数相乘并将其转换为整数的简单操作,但结果似乎与预期不同。抱歉,如果在其他地方对此进行了讨论,我无法找到任何直接的答案

> as.integer(1190.60 * 100)
[1] 119059
Run Code Online (Sandbox Code Playgroud)

编辑: 所以,我必须将其转换为字符,然后执行 as.integer 以获得预期的结果

> temp <- 1190.60
> temp2 <- 1190.60 * 100
> class(temp)
[1] "numeric"
> class(temp2)
[1] "numeric"
> as.character(temp2)
[1] "119060"
> as.integer(temp2)
[1] 119059
> as.integer(as.character(temp2))
[1] 119060
Run Code Online (Sandbox Code Playgroud)

EDIT2:根据评论,感谢@andrey-shabalin

> temp2
[1] 119060
> as.integer(temp2)
[1] 119059
> as.integer(round(temp2))
[1] 119060
Run Code Online (Sandbox Code Playgroud)

EDIT3:正如评论中提到的,问题与 as.integer 的行为有关,而不是关于浮动计算

r

5
推荐指数
1
解决办法
900
查看次数

标签 统计

r ×1