没有加号的科学记数法

问题描述 投票:0回答:2

'{:e}'.format
函数以“1e+06”的形式打印正值。

是否有其他格式将其显示为“1e6”(负指数显然为“1e-6”)?

或者需要自定义格式功能吗?

python formatting
2个回答
4
投票

您可以派生您自己的

string.Formatter
子类:

import string


class MyFormatter(string.Formatter):
    def format_field(self, value, format_spec):
        if format_spec == 'm':
            return super().format_field(value, 'e').replace('e+', 'e')
        else:
            return super().format_field(value, format_spec)


fmt = MyFormatter()
v = 1e+06
print(fmt.format('{:e}, {:m}', v, v))  # -> 1.000000e+06, 1.000000e06

0
投票

使用

numpy
您可以使用
np.log10
分隔变量的尾数和指数,然后您可以按照您想要的方式格式化字符串。以下示例打印科学记数法,指数部分不带 + 号,并带有三位小数尾数和一位指数。标志 - 如果 0<
number
<1.

仍会显示
number = -np.pi/100
exponent = int(np.log10(np.abs(number)))
mantissa  = number/10**exponent
print(f'{mantissa:.3f}e{exponent:.0f}')

这将打印

-0.314e-1

© www.soinside.com 2019 - 2024. All rights reserved.