【发布时间】:2011-08-06 05:49:03
【问题描述】:
我只是想把 R 数四舍五入:
> round(1.327076e-09)
我希望它产生
> 1.33e-09
但结果
> 0
可以使用哪个功能?
【问题讨论】:
-
为什么返回
1.32e-09不应该是1.33e-09?还是您只想截断第二个 dp 之后的数字?
我只是想把 R 数四舍五入:
> round(1.327076e-09)
我希望它产生
> 1.33e-09
但结果
> 0
可以使用哪个功能?
【问题讨论】:
1.32e-09不应该是1.33e-09?还是您只想截断第二个 dp 之后的数字?
【讨论】:
使用signif:
x <- 1.327076e-09
signif(x,3)
[1] 1.33e-09
或sprintf:
sprintf("%.2e",x)
[1] "1.33e-09"
【讨论】:
sprintf 良好通话。通常,您只想在显示数字时丢失精度,而不是在实际计算中。 round 和 signif 应谨慎使用。
函数round会进行四舍五入,你可以指定小数位数:
x <- 1.327076e-09
round(x, 11)
[1] 1.33e-09
迎接@Joris 和@GavinSimpson 提出的挑战 - 要在此问题上使用trunc,请执行以下操作:
library(plyr)
round_any(x, 1e-11, floor)
[1] 1.32e-09
【讨论】:
trunc() 在这里工作:> trunc(1.327076e-09) [1] 0?