2015-02-10 58 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'