'{:e}'.format
函数以“1e+06”的形式打印正值。
是否有其他格式将其显示为“1e6”(负指数显然为“1e-6”)?
或者需要自定义格式功能吗?
您可以派生您自己的
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
使用
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
。