R 中的舍入误差?

标签 r rounding

考虑以下几点:

> x<-178379.4999999999999999999999999999999
> x
[1] 178379.5
> round(x)
[1] 178380

这似乎是一个基本的舍入误差。 R 中是否存在已知的舍入误差?还是因为即使在工作内存中,R 也只能处理最多 22 位数字?

最佳答案

这是两个非常常见的问题的组合。

  • finite floating-point precision:这个 R FAQ 7.31,参见例如Why are these numbers not equal? .该值四舍五入为 178379.5。如果您设置 options(digits=22) 将数字打印到更多小数位,这将无济于事;精度已经丢失,因为(如您所建议的)R 仅存储精度高达 53 位二进制/22 位十进制数字的值。
  • 四舍五入:R“四舍五入”,见Is there an error in round function in R? .这意味着该值将向上舍入。

这与打印精度无关

如果您使用较少的 '9',您会看到您所期望的结果(这将是 R 有限的打印精度加上预期的舍入的组合)

> x <- 178379.49
> 
> x
[1] 178379.5  ## prints as .5, but full precision is present
> round(x)
[1] 178379

关于R 中的舍入误差?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51450396/

相关文章:

r - Shiny 的模块不适用于 renderUI

r - 将 R 代码推送到 postgresql 数据库中的 PL/R 代码

javascript - 为什么 e 符号数字在 JavaScript 中的计算方式不同?

R光栅在缩放到具有偏移的较大分辨率时计算区域加权平均值

r - R中列表中项目的频率

r - 基于小数点前位数的不同舍入规则

java - Android - 如何自定义舍入值?

c++ - 行编辑setText函数Qt

r - 用数据帧中的值替换向量的元素