根据文档,定点符号的行为不正确

Fixed-point notation is not behaving acording to the documentation

我想格式化一些固定精度为 3 的值,除非它是整数。在那种情况下,我不想要任何小数点或尾随 0。

根据文档,如果后面没有数字,字符串格式中的 'f' 类型应删除小数点:

If no digits follow the decimal point, the decimal point is also removed unless the # option is used.

但是用 python3.8 测试它,我得到以下结果:

>>> f'{123:.3f}'
'123.000'
>>> f'{123.0:.3f}'
'123.000'

我是不是误会了什么?如果不使用 if else 检查,我怎么能达到预期的结果?

为了用相同的 f 字符串表达式强制实现您想要的输出,您可以应用一些功夫,例如

i = 123
f"{i:.{3*isinstance(i, float)}f}"
# '123'

i = 123.0
f"{i:.{3*isinstance(i, float)}f}"
# '123.000'

但这不会提高代码的可读性。更明确一点没有坏处。