四舍五入小浮点数
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")
假设我有一个数字向量,我想将其四舍五入为 '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")