簡體   English   中英

如何使用sprintf控制Perl中的浮點格式?

[英]How to control floating-point formatting in Perl using sprintf?

我通常使用%g ,但似乎指數位的數量是系統相關的 ,我不能像%.4g%.2g這樣的變體工作(它們只產生相同的結果,不是嗎?)。

我真正想做的是如果數字(絕對值)在某個范圍內(例如10 ^ 5> | x |> 10 ^ -5),則使用簡單的浮點表示“如果可能”,否則使用科學計數法。 我也想限制顯示的位數,比如5(所以我不會得到超大的浮點數,如0.12345678901234567890 ......)。

一些例子:

0.123456890 - > 0.12346

0.000000000123456 - > 1.23456e-10

我可以直接在sprintf執行此操作,還是必須編寫特殊的包裝器?

不,你必須編寫一個自定義包裝器來獲得你描述的行為:正如perlfunc所說:

對於“g”和“G”,[精度]指定要顯示的最大位數,包括小數點之前和之后的位數;

請注意,簡單浮點表示中的前導零計為“數字”。

CPAN上有一些模塊可以幫助你編寫類似sprintf的函數。 String :: sprintf用於向常規sprintf格式添加一個或兩個自定義格式。 String :: Formatter用於從頭開始,其函數看起來像sprintf但不從它繼承任何格式。

暫無
暫無

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

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