作者:扈菁雄佳纯 | 来源:互联网 | 2022-12-10 07:18
考虑以下:
> x<-178379.4999999999999999999999999999999
> x
[1] 178379.5
> round(x)
[1] 178380
这似乎是一个基本的舍入错误。R中是否存在已知的舍入误差?还是因为即使在工作存储器中,R最多也只能处理22位数字?
1> Ben Bolker..:
这是两个非常频繁的Q值的组合。
有限浮点精度:R FAQ 7.31,请参见例如,为什么这些数字不相等?。该值四舍五入为178379.5。如果您设置options(digits=22)
将数字打印到更多小数位,将无济于事。由于(按照您的建议)R仅存储不超过53个二进制/ 22ish十进制精度的值,因此精度已丢失。
舍入到偶数:R“ 舍入到偶数”,请参见R中的舍入函数是否有错误?。这意味着该值将被四舍五入。
这与打印精度无关。
如果您使用较少的'9's,您会看到预期的结果(这是R的有限打印精度加上预期的取整的组合)
> x <- 178379.49
>
> x
[1] 178379.5 ## prints as .5, but full precision is present
> round(x)
[1] 178379