2015-02-10 54 views
3

如果他們高於0.001,我想輸出爲{:f},否則,如{:e}(指數)。如何在參數的值上調整格式說明符?

我不知道我是否可以在一個字符串格式化行中執行此操作,這不是在實際打印的行上調整,而是在其內部。是否允許使用lambda表達式? (附註:?他們在哪裏允許,真的)

FTR,這是我的輸出字符串:

print("{:f}".format(my_float)) 
+0

心靈的')'末 – ForceBru 2015-02-10 14:16:33

+3

你可以這樣做:'打印((「{:F}」如果my_float> 0.001 else「{:e}」).format(my_float))',但看起來有些尷尬! – jonrsharpe 2015-02-10 14:17:52

回答

2

我想我會用"{:g}"。這將觸發器來回指數符號和正常浮動符號之間取決於值:

>>> '{:g}'.format(0.001) 
'0.001' 
>>> '{:g}'.format(0.0000001) 
'1e-07' 

相反"{:e}"這始終是指數...

>>> '{:e}'.format(0.001) 
'1.000000e-03' 
+0

'{:g}'。格式(0.0001)表示爲'0.0001' – thiruvenkadam 2015-02-10 14:31:46

2

添加條件到格式我能想到的一種方法

>>> x = 0.0001276 
>>> '{:{type}}'.format(x, type='f' if x>0.001 else 'e') 
'1.276000e-04' 
>>> x = 0.01 
>>> '{:{type}}'.format(x, type='f' if x>0.001 else 'e') 
'0.010000' 

這在我看來比lambda好。

弄死如果別的,你可以去或操作

(x>0.01 and 'f') or 'e'