2015-10-18 28 views
-3

如何以小數點前只有零點的方式打印任何浮點數?如何將數字4.082E-08打印爲0.4082E-07?

例如:如何打印4.082E-08爲0.4082E-07?

num = 4.082E-08 
# Do something. 

print num # Here I need to print 0.4082E-07 
+3

[強制引導爲零的python科學記數法可能的重複](http://stackoverflow.com/questions/21266850/python-scientific-notation-with-forced-leading-zero) – bouteillebleu

+1

撇開這兩個事實,申述不等同,你只需要處理這個單號?如果是這樣,'打印'0.4082E-09''就足夠了。或者你想要一個通用的解決方案?如果是這樣,完整的規格是什麼? –

+0

我糾正了我的問題。我可以回答嗎? – Zaman

回答

1

首先,我可能是錯的,但我認爲4.082E-08實際上是0.4082E-07 更正。

如果你想限制長度(打印字符數),我建議你看看format function

>>> print('{:010.3E}'.format(4.082E-08)) 
04.082E-08 

如果你要打印十特定的電源,你可以簡單地通過這種權力劃分和打印指數自己:

>>> print("{}E-07".format(num/1e-7)) 
0.4082E-07 

def ppow(num,power): 
    return "{}E{}".format(num/10**power,int(power)) 
print(ppow(num,-7)) 

>>> print(ppow(num),-7) 
0.4082E-7 

最後,如果你總是希望只有一個零,你只需要動態計算十的冪。在這種情況下,它比科學記數法中的通常指數(以10爲底的記錄的底數)多一個。

import math 
def str_leadingzero(num): 
    power = math.floor(math.log10(num))+1 
    ppow(num,power) 

>>> str_leadingzero(num) 
    0.4082E-7 
>>> str_leadingzero(4.082E08) 
    0.4082E9 

當然,這些尖晶石可能不是最佳的解決方案,但我希望你明白並實現你自己的想法。

+0

謝謝Geeklhem。我糾正了我的問題。我可以有新的答案嗎? – Zaman

+0

完成。它確實適用於正面和負面的指數。 – Geeklhem

+0

感謝Geeklhem! – Zaman