[英]Python - fixed exponent in scientific notation?
考慮以下 Python 片段:
for ix in [0.02, 0.2, 2, 20, 200, 2000]:
iss=str(ix) + "e9"
isf=float(iss)
print(iss + "\t=> " + ("%04.03e" % isf ) + " (" + str(isf) + ")")
它生成以下輸出:
0.02e9 => 2.000e+07 (20000000.0)
0.2e9 => 2.000e+08 (200000000.0)
2e9 => 2.000e+09 (2000000000.0)
20e9 => 2.000e+10 (20000000000.0)
200e9 => 2.000e+11 (2e+11)
2000e9 => 2.000e+12 (2e+12)
我的問題是 - 是否有可能以某種方式“回去”? 那是:
2.000e+07 => 0.02e9
2.000e+08 => 0.2e9
2.000e+09 => 2e9
2.000e+10 => 20e9
2.000e+11 => 200e9
2.000e+12 => 2000e9
...我會指定我希望指數為“ e+09
”; 然后我在這個假設函數中拋出的任何數字都會返回該指數中的數值? 是否可以在每種情況下為整數和小數部分指定零填充? (即000.0200e9
和020.0000e9
)?
自己格式化(請參閱格式規范迷你語言):
for ix in [.02e9,.2e9,2e9,20e9,200e9,2000e9]:
print('{:.3e} => {:0=8.3f}e9'.format(ix,ix/1e9))
2.000e+07 => 0000.020e9
2.000e+08 => 0000.200e9
2.000e+09 => 0002.000e9
2.000e+10 => 0020.000e9
2.000e+11 => 0200.000e9
2.000e+12 => 2000.000e9
{:0=8.3f}
表示“零填充,符號和數字之間填充,總字段寬度為 8,小數點后 3 位,定點格式”。
嗯,明白了:
for ix in [0.02, 0.2, 2, 20, 200, 2000]:
iss=str(ix) + "e9"
isf=float(iss)
isf2=isf/float("1e9")
isf2s = ("%04.03f" % isf2) + "e9"
print(iss + "\t=> " + ("%04.03e" % isf ) + " (" + str(isf) + ")" + " -> " + isf2s )
...給出:
0.02e9 => 2.000e+07 (20000000.0) -> 0.020e9
0.2e9 => 2.000e+08 (200000000.0) -> 0.200e9
2e9 => 2.000e+09 (2000000000.0) -> 2.000e9
20e9 => 2.000e+10 (20000000000.0) -> 20.000e9
200e9 => 2.000e+11 (2e+11) -> 200.000e9
2000e9 => 2.000e+12 (2e+12) -> 2000.000e9
抱歉發帖,
干杯!
對於多年后仍然遇到的任何人......
您可以將 python 的 Decimal 與 quantize 一起使用
https://docs.python.org/3.6/library/decimal.html#decimal.Decimal.quantize
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.