根据文档,定点符号的行为不正确
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'
但这不会提高代码的可读性。更明确一点没有坏处。
我想格式化一些固定精度为 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'
但这不会提高代码的可读性。更明确一点没有坏处。