[英]convert exponential to decimal in python
我在python中有一個包含一組值的數組,其中一些是
2.32313e + 07
2.1155e + 07
1.923e + 07
11856
112.32
如何將指數格式轉換為十進制格式
附加:在使用awk在UNIX中打印時,有沒有辦法可以將指數直接轉換為十進制?
我想你有一個列表而不是一個數組,但在這里並沒有太大的區別; 在2.6和早期版本的Python中,類似於:
>>> L = [2.32313e+07, 2.1155e+07, 1.923e+07, 11856, 112.32]
>>> for x in L: print '%f' % x
...
23231300.000000
21155000.000000
19230000.000000
11856.000000
112.320000
在2.6或更高版本中, .format
方法。 我想你是知道數字本身,作為數字,不是任何“格式” - 它是你通過格式化數字獲得的字符串 ,例如輸出,以某種格式。 BTW, %f
上的變體可以讓你控制小數位數,寬度,對齊等 - 如果沒有你的進一步說明,很難准確地建議你想要什么。
在awk中,您可以使用printf 。
您可以使用locale.format()格式化輸出的數字。 這具有額外的好處,即與數字表示中可能預期的任何特定於語言環境的約定一致。 如果您想要在輸出的特定位置進行完全控制,那么您最好使用打印“格式”%vars ... 變體 。
例:
>>> import locale
>>> locale.setlocale(locale.LC_ALL, "")
'C/UTF-8/C/C/C/C'
>>> locale.format("%f", 2.32313e+07, 1)
'23231300.000000'
在回答問題的最后部分時, awk
可以使用相同的printf
格式:
awk '{printf "%f\n",$1}' exponential_file
其中exponential_file包含:
2.32313e+07
2.1155e+07
1.923e+07
11856
112.32
您可以將轉換轉換為變量以供日后使用。 這是一個簡單的例子:
awk '{n = sprintf("%f\n",$1); print n * 2}' exponential_file
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.