如何调整参数值的格式说明符?

时间:2015-02-10 14:15:34

标签: python python-3.x number-formatting

如果值高于0.001,我想将值输出为{:f},否则为{:e}(指数)。

我想知道我是否可以在一个字符串格式化行中执行此操作,这不是在实际打印的行上进行调整,而是在其中。是否允许使用lambda表达式? (旁注:他们允许在哪里,真的吗?)

FTR,这是我的输出字符串:

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

2 个答案:

答案 0 :(得分:2)

我想我会使用"{:g}"。这将在指数表示法和正常浮点表示法之间来回翻转,具体取决于值:

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

与总是呈指数的"{:e}"形成对比......

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

答案 1 :(得分: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更好。

要废除if else,你可以使用和/或操作

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