当前位置:  开发笔记 > 编程语言 > 正文

如何在Python中抑制科学记数法?

如何解决《如何在Python中抑制科学记数法?》经验,为你挑选了5个好方法。

这是我的代码:

x = 1.0
y = 100000.0    
print x/y

我的商显示为 1.00000e-05

有没有办法压制科学记数并使其显示为 0.00001?我将把结果用作字符串.



1> Aziz Alto..:

使用较新的版本''.format(还要记住在.您希望显示之后指定多少位数,这取决于浮点数的小数).看这个例子:

>>> a = -7.1855143557448603e-17
>>> '{:f}'.format(a)
'-0.000000'

如上图所示,默认为6位数!这对我们的案例没有帮助,所以我们可以使用这样的东西:

>>> '{:.20f}'.format(a)
'-0.00000000000000007186'

更新

从Python 3.6开始,可以使用新格式化的字符串文字简化,如下所示:

>>> f'{a:.20f}'
'-0.00000000000000007186'



2> SilentGhost..:
'%f' % (x/y)

但你需要自己管理精度.例如,

'%f' % (1/10**8)

将仅显示零.
详细信息在文档中

或者对于Python 3 ,等效的旧格式或更新的样式格式


我建议澄清你的陈述,说:"你自己管理精确度*显示*." 实际(Python内部)精度不会改变,就像在其他语言中经常做的那样.

3> nmichaels..:

使用较新版本的Python(2.6及更高版本),您可以使用它''.format()来完成@SilentGhost建议的内容:

'{0:f}'.format(x/y)



4> Josh Janjua..:

如果您使用的是熊猫并且想抑制所有浮标的科学计数法,则另一种选择是调整熊猫选项。

import pandas as pd
pd.options.display.float_format = '{:.2f}'.format



5> Captain Cucu..:

这将适用于任何指数:

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

推荐阅读
贴进你的心聆听你的世界
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有