【发布时间】:2016-01-14 20:03:05
【问题描述】:
我在 R 中工作,我从数据库中导入数据。该数据库提供带有浮点舍入误差的数字。例如,我正在使用的 2 个值是 Limit1
Limit1 应四舍五入到小数点后 3 位,Limit2 应四舍五入到小数点后两位。虽然我当然可以使用 round 函数,但我希望有一个现有的函数,或者有人编写的东西可以智能地将它们转换为正确的小数,而无需我手动、硬编码将它们逐个舍入。
我一直在想出一种奇怪的方法来计算连续的 9 或 0,并从该信息中找出有效的小数位数,假设没有一个真实值包含“000”或“999”。但是,我觉得我不可能是唯一遇到这种情况的人。必须有更好的方法。
谢谢
【问题讨论】:
-
zapsmall()函数用于处理浮点错误,但它不适用于这些数字。如果你只是在他们两个上都使用round(x,7)呢? -
也许,见,
?signif?例如。as.character(c(Limit1, Limit2)); as.character(signif(c(Limit1, Limit2)))似乎适用于您的示例。 -
我不明白你为什么不能按原样使用这些数字。
-
对于计算它们很好,但我需要在我正在绘制的一些图表的图例上显示这些数字。有趣的是,如果我让 R 在控制台中向我显示这些值,它会完美地将它们四舍五入以供查看 - 它是否使用我可以访问的函数来保留这些四舍五入的值?
-
你正在寻找像
print.default这样的函数(print被隐式调用用于控制台输出,你可以设置一些全局的options),format,sprintf,formatC, ...
标签: r floating-point rounding-error