四舍五入小浮点数

Rounding small floating point numbers

假设我有一个数字向量,我想将其四舍五入为 'prettier' 个数字,例如:

vec <- c(1.739362e-08,8.782537e-08,0.5339712)

我希望它是:

pretty.vec <- c(1.74e-08,8.78e-08,0.53)

我该如何实现?使用 round 并没有真正帮助,因为它将前两个元素四舍五入为 0:

> round(vec,2)
[1] 0.00 0.00 0.53

?signif怎么样? (根据您的应用,您还可以使用 print(...,digits=3)

vec <- c(1.739362e-08,8.782537e-08,0.5339712)
signif(vec,digits=3)
## [1] 1.74e-08 8.78e-08 5.34e-01
print(vec,digits=3)
## [1] 1.74e-08 8.78e-08 5.34e-01

很难让 R 以不同的方式格式化向量的元素:通常它假设您想要这种一致性。

print(sprintf("%1.3g",vec),quote=FALSE)
## [1] 1.74e-08 8.78e-08 0.534   

也相关:?format?options(参见"scipen")