如何在Python中压缩科学记数法?
这是我的代码:
x = 1.0 y = 100000.0 print x/y  我的商数显示为1.00000e-05 
 有没有办法压制科学记数法,使其显示为0.00001 ? 如何将科学记数法转换为float 。 
 提前致谢。 
 这有点可笑,但我还没有想出办法。 我将使用结果作为一个string。 
 '%f' % (x/y) 
但是你需要自己pipe理精确度。 例如,
 '%f' % (1/10**8) 
 将只显示零。 
  细节在文档中 
或者对于Python 3来说,等效的旧格式或更新的样式格式
 使用较新版本的Python(2.6及更高版本),您可以使用''.format()来完成@SilentGhost的build议: 
 '{0:f}'.format(x/y) 
 使用新版本''.format (还要记住要显示的数字后面的数字,这取决于浮点数是多less)。 看到这个例子: 
 >>> a = -7.1855143557448603e-17 >>> '{:f}'.format(a) '-0.000000' 
如上所示,默认值是6位! 这对我们的案例是没有帮助的,所以我们可以使用这样的东西:
 >>> '{:.20f}'.format(a) '-0.00000000000000007186' 
更新
从Python 3.6开始,可以使用新的带格式的string来简化,如下所示:
 >>> f'{a:.20f}' '-0.00000000000000007186' 
除了SG的回答之外,您还可以使用Decimal模块:
 from decimal import Decimal x = str(Decimal(1) / Decimal(10000)) # x is a string '0.0001' 
这将适用于任何指数:
 def getExpandedScientificNotation(flt): str_vals = str(flt).split('e') coef = float(str_vals[0]) exp = int(str_vals[1]) return_val = '' if int(exp) > 0: return_val += str(coef).replace('.', '') return_val += ''.join(['0' for _ in range(0, abs(exp - len(str(coef).split('.')[1])))]) elif int(exp) < 0: return_val += '0.' return_val += ''.join(['0' for _ in range(0, abs(exp) - 1)]) return_val += str(coef).replace('.', '') return return_val 
这是使用黄瓜队长的答案 ,但有2个补充。
1)允许函数获得非科学的数字符号,只是返回它们(所以你可以投入很多的input,一些数字是0.00003123 vs 3.123e-05,仍然有function的工作。
2)增加了对负数的支持。 (在原来的函数中,一个负数将会从-1.08904e-05变成0.0000-108904)
 def getExpandedScientificNotation(flt): was_neg = False if not ("e" in flt): return flt if flt.startswith('-'): flt = flt[1:] was_neg = True str_vals = str(flt).split('e') coef = float(str_vals[0]) exp = int(str_vals[1]) return_val = '' if int(exp) > 0: return_val += str(coef).replace('.', '') return_val += ''.join(['0' for _ in range(0, abs(exp - len(str(coef).split('.')[1])))]) elif int(exp) < 0: return_val += '0.' return_val += ''.join(['0' for _ in range(0, abs(exp) - 1)]) return_val += str(coef).replace('.', '') if was_neg: return_val='-'+return_val return return_val 
 如果它是一个string然后使用内置的float进行转换,例如: print( "%.5f" % float("1.43572e-03"))回答: 0.00143572