我想将float格式化为严格 3或4位小数。
例如:
1.0 => 1.000 # 3DP
1.02 => 1.020 # 3DP
1.023 => 1.023 # 3DP
1.0234 => 1.0234 # 4DP
1.02345 => 1.0234 # 4DP
'{:.5g}'.format(my_float)
和'{:.4f}'.format(my_float)
的组合。
有什么想法吗?
答案 0 :(得分:4)
假设我理解你要问的内容,你可以将其格式化为4,然后删除尾随的' 0'如果有的话。像这样:
def fmt_3or4(v):
"""Format float to 4 decimal places, or 3 if ends with 0."""
s = '{:.4f}'.format(v)
if s[-1] == '0':
s = s[:-1]
return s
>>> fmt_3or4(1.02345)
'1.0234'
>>> fmt_3or4(1.023)
'1.023'
>>> fmt_3or4(1.02)
'1.020'