【问题标题】:Python: format float to a minimum floating point precision if neededPython:如果需要,将浮点格式设置为最小浮点精度
【发布时间】:2021-01-14 14:37:22
【问题描述】:
假设我有两个数字 1.2 和 1.24898,我如何格式化字符串,以便任何没有足够精度的东西总是固定到两个浮点数 (.2f) 但任何超过 2 的东西都将保留它们的浮动积分?
我希望将其打印为:1.20 和 1.24898。有没有办法通过print 格式化或pythonic 方式做到这一点?
执行print(f'{1.24898:,.2f}') 会导致它被固定到 2 个位置,但我想保留它的所有精度。同样对于1.2,我希望它打印为1.20。
【问题讨论】:
标签:
python
string
printing
floating-point
decimal
【解决方案1】:
我建议使用上一个答案的单行版本
number=1.2
print(max('{:.2f}'.format(number),str(number),key=len))
# Ouput : 1.20
number=1.24898
print(max('{:.2f}'.format(number),str(number),key=len))
# Output : 1.24898
【解决方案2】:
我在一个列表中提取了一些元素,该列表具有不同的浮点数。检查str(x)[::-1].find('.') 是否大于 2。如果大于 2。它保持不变,否则设置该数字的两个精度。
ls = [1.2, 1.24898, 3]
for x in ls:
if str(x)[::-1].find('.') > 2:
print(x)
else:
print(f'{x:.2f}')
# Output
# 1.20
# 1.24898
# 3.00