我想
1.2 -> 1.200000
12.3 -> 12.30000
1234.5 -> 1234.500
12.34444444444 -> 12.34444
我试过了
value = 1234.5
s = f"{value:.8f}"
和类似的格式,但它并不总是保留 8 个字符(7 位数字 + 小数点)。
如何用format
or做到这一点f"..." strings
?
我知道还有其他解决方案,例如,f"{value:.20f}"[:8]
但我很好奇是否可以仅使用格式化。
您可以计算长度并以编程方式设置要保留的小数位数:
value = 1234.5
import math
N = 8
n = 1+math.floor(math.log10(value))
s = f"{value:.{N-n-1}f}"
输出:'1234.500'
def fmt(value, N=8):
import math
if value > 0:
v = value
elif value < 0:
v = -10*value
else:
v = 1
n = 1+math.floor(math.log10(v))
if n>=N-1:
return str(round(value))
# or overflow
# return '!'*N
return f"{value:.{N-n-1}f}"
l = [-12.3, -1, 0, 1, 10, 1.2, 12.3, 100, 1234.5, 12.34444444444, 123456789.9]
print('\n'.join([fmt(v) for v in l]))
输出:
-12.3000
-1.00000
0.000000
1.000000
10.00000
1.200000
12.30000
100.0000
1234.500
12.34444
123456790
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句