簡體   English   中英

四舍五入小浮點數

[英]Rounding small floating point numbers

假設我有一個數字向量,我想四舍五入為“更漂亮”的數字,例如:

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”)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM