考虑以下:
> x<-178379.4999999999999999999999999999999
> x
[1] 178379.5
> round(x)
[1] 178380
这似乎是一个基本的舍入错误。 R 中是否存在已知的舍入误差?或者是因为即使在工作内存中,R 也只能处理最多 22 位数字?
这是两个极其常见的 A'd Q 的组合。
-
有限浮点精度:此 R FAQ 7.31,请参见例如为什么这些数字不相等?。该值四舍五入为 178379.5。如果你设置它不会有帮助
options(digits=22)
将数字打印到更多小数位;精度已经丢失,因为(正如您所建议的)R 只存储最多 53 位二进制/22 位十进制精度的值。
-
四舍五入到偶数:R“舍入为偶数”,请参阅R中的round函数有错误吗?。这意味着该值将被四舍五入。
This is not关于印刷精度。
如果您使用较少的“9”,您就会看到您所期望的结果(这将是 R 有限的组合)printing精度加上预期的舍入)
> x <- 178379.49
>
> x
[1] 178379.5 ## prints as .5, but full precision is present
> round(x)
[1] 178379
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)