首页 > 解决方案 > R中数字的内部表示

问题描述

> trunc(26015)
[1] 26015
> 260.15*100
[1] 26015
> trunc(260.15*100)
[1] 26014
> floor(260.15*100)
[1] 26014
> as.integer(260.15*100)
[1] 26014

对于 R 中的这段代码,数字的内部表示是否存在问题?当我做 260.15*100 时,打印的数字仍然是 26015,但是当我使用 trunc() 或 as.integer() 之类的函数时,它变成了 26014。通常,我包含小数的值来自另一个变量。那么我该如何克服这个问题呢?

标签: rprecision

解决方案


数字的打印方法与其内部表示不同。260.15 * 100实际上从来不是 26015,它只是这样打印的。print.numeric使用舍入。基础numeric数据是浮点数。您可以通过更改打印选项来查看:

# set print.numeric() to display up to 22 digits, the maximum possible
> options(digits = 22)
> 260.15 * 100
[1] 26014.99999999999636202
> 26015
[1] 26015

代替trunc()or as.integer(),是否round()满足您的需求?


推荐阅读