![](/img/trans.png)
[英]How to change exponential number format to the floating-point format in 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.