如何根据参数的值设置格式说明符的条件?

2024-09-28 19:28:49 发布

您现在位置:Python中文网/ 问答频道 /正文

如果值大于0.001,我想输出为{:f},否则输出为{:e}(指数)。你知道吗

我想知道我是否可以在一个字符串格式行内完成这项工作,这不是在实际打印的行上,而是在它的内部。允许使用lambda表达式吗?(旁注:哪里允许他们,真的?)你知道吗

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

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

Tags: lambda字符串format表达式my格式指数float
2条回答

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

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

"{:e}"相反,它总是指数型的。。。你知道吗

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

将条件添加到格式中是我可以想到的一种方法

>>> 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'

在我看来,这比兰博达好。你知道吗

要想去掉if else,你可以用and or操作

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

相关问题 更多 >