我知道您可以避免输出,例如,使用'{:.10f}'.format( 1e-10 )可以避免输出1e-10,但我会根据e后面的值调整为将小数位作为变量( 10f和e-10) ...
我使用此代码来查找所需的小数点的值
a = 6.789e-05
b = str(a)
if b[5] == 'e':
if b[7] == '0':
decimal_places = int(b[8])
else:
decimal_places = int(b[7]+b[8])但我正在努力弄清楚,为什么我不能用我找到的东西来调整变量a的小数位?因为用decimal_places变量替换“10f”不起作用...感谢任何人的帮助!
发布于 2021-04-07 19:45:37
我已经编写了一个简单的函数来获得数字精度:
def precision(num):
n = str(num).split('e')
if len(n) == 1:
return 0
x = 0 if len(n[0].split('.')) == 1 else len(n[0].split('.')[1])
return x + abs(int(n[1]))然后,您可以使用字符串格式将您的数字打印到所需的精度:
a = 6.789e-05
b = 6e-05
c = 3.5
d = 5
print('{num:.{precision}f}'.format(num=a, precision=precision(a))) # 0.00006789
print('{num:.{precision}f}'.format(num=b, precision=precision(b))) # 0.00006
print('{num:.{precision}f}'.format(num=c, precision=precision(c))) # 3.5
print('{num:.{precision}f}'.format(num=d, precision=precision(d))) # 5https://stackoverflow.com/questions/66985229
复制相似问题