python - Python中科学记数法中的指数数字

标签 python scientific-notation exponent

在 Python 中,科学记数法总是给我 2 位数的指数:

print('%17.8E\n' % 0.0665745511651039)
6.65745512E-02

但是,我非常想要像这样的 3 位数字:

6.65745512E-002

我们可以使用 Python 中的内置配置/函数来做到这一点吗?

我知道我的问题基本上是同一个问题:Python - number of digits in exponent ,但这个问题是 4 年前提出的,我不想调用这样的函数一千次。我希望现在应该有更好的解决方案。

最佳答案

不幸的是,您无法更改此默认行为,因为您无法覆盖 str 方法。

但是,您可以包装 float ,并使用 __format__ 方法:

class MyNumber:
    def __init__(self, val):
        self.val = val

    def __format__(self,format_spec):
        ss = ('{0:'+format_spec+'}').format(self.val)
        if ( 'E' in ss):
            mantissa, exp = ss.split('E')            
            return mantissa + 'E'+ exp[0] + '0' + exp[1:]
        return ss


     print( '{0:17.8E}'.format( MyNumber(0.0665745511651039)))

关于python - Python中科学记数法中的指数数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39184719/

相关文章:

c# - 在 C# 中将科学计数法字符串转换为 float

Python:以科学格式打印,十的幂只是 3 的倍数

python - python 中的小数指数不一致

c 改变 double 的指数

python - 我们如何导航到网页、抓取数据、移至下一页,然后再次执行此操作?

python - 使用 lxml 的 tostring() 从 xml/html 中删除根标签

python - 如何在Python中显示EOF?/如何识别行?

python - Pandas :应用返回 list

ios - UIStepper.value 变成科学计数法

r - 将单位缩写转换为数字