如果值高于0.001,我想将值输出为{:f},否则为{:e}(指数)。
我想知道我是否可以在一个字符串格式化行中执行此操作,这不是在实际打印的行上进行调整,而是在其中。是否允许使用lambda表达式? (旁注:他们允许在哪里,真的吗?)
FTR,这是我的输出字符串:
print("{:f}".format(my_float))
答案 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'