这是我的代码:
x = 1.0 y = 100000.0 print x/y
我的商显示为 1.00000e-05
有没有办法压制科学记数并使其显示为
0.00001
?我将把结果用作字符串.
使用较新的版本''.format
(还要记住在.
您希望显示之后指定多少位数,这取决于浮点数的小数).看这个例子:
>>> a = -7.1855143557448603e-17 >>> '{:f}'.format(a) '-0.000000'
如上图所示,默认为6位数!这对我们的案例没有帮助,所以我们可以使用这样的东西:
>>> '{:.20f}'.format(a) '-0.00000000000000007186'
从Python 3.6开始,可以使用新格式化的字符串文字简化,如下所示:
>>> f'{a:.20f}' '-0.00000000000000007186'
'%f' % (x/y)
但你需要自己管理精度.例如,
'%f' % (1/10**8)
将仅显示零.
详细信息在文档中
或者对于Python 3 ,等效的旧格式或更新的样式格式
使用较新版本的Python(2.6及更高版本),您可以使用它''.format()
来完成@SilentGhost建议的内容:
'{0:f}'.format(x/y)
如果您使用的是熊猫并且想抑制所有浮标的科学计数法,则另一种选择是调整熊猫选项。
import pandas as pd pd.options.display.float_format = '{:.2f}'.format
这将适用于任何指数:
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