Python:以科学格式打印,10的幂仅为3的倍数

Python:以科学格式打印,10的幂仅为3的倍数,python,printing,scientific-notation,string.format,Python,Printing,Scientific Notation,String.format,在以科学格式显示数字时,我还没有找到一种只获取3的倍数的指数的方法。我也没有成功编写一个简单的自定义格式函数 下面是一个简单的例子: 使用科学符号和蟒蛇的正常行为.format(): 一、 但是,需要以下输出: >>> 12.00E-03 1.30E-03 15.00E+06 1.60E+06 有人知道我获取所需格式的简便方法吗?好吧,这取决于您是希望输出格式始终调整到最接近的3次方,还是希望它调整到最接近的较低的3次方。基本上

在以科学格式显示数字时,我还没有找到一种只获取3的倍数的指数的方法。我也没有成功编写一个简单的自定义格式函数

下面是一个简单的例子:
使用科学符号和蟒蛇的正常行为
.format()

一、 但是,需要以下输出:

>>> 12.00E-03   
     1.30E-03   
    15.00E+06  
     1.60E+06  

有人知道我获取所需格式的简便方法吗?

好吧,这取决于您是希望输出格式始终调整到最接近的3次方,还是希望它调整到最接近的较低的3次方。基本上它涉及到:你如何处理
1.50E+05
?它应该是
150.00E+03
还是
0.15E+06

情况1:最近的低次方3
来自数学导入日志10,楼层
数字=[1.2e-2,1.3e-3,1.5e5,1.6e6]
def调整后的科学符号(val,数值小数=2,指数=2):
exponent\u template=“{:0>%d}”%exponent\u pad
尾数模板=“{:.%df}”%num\u小数
数量级=地板(log10(abs(val)))
最接近的三分之一=3*(数量级//3)
调整后尾数=val*10**(-最近的尾数下三分之一)
调整后的尾数字符串=尾数模板。格式(调整后的尾数)

调整后的指数字符串=“+-”[最近的较低值]。实际上,它不再是一种科学符号,因为
12
大于
10
>>> 1.20E-02  
    1.30E-03  
    1.50E+05  
    1.60E+06  
>>> 12.00E-03   
     1.30E-03   
    15.00E+06  
     1.60E+06  
1.20E-02 ->  12.00E-03
1.30E-03 ->   1.30E-03
1.50E+05 -> 150.00E+03
1.60E+06 ->   1.60E+06
1.20E-02 ->  12.00E-03
1.30E-03 ->   1.30E-03
1.50E+05 ->   0.15E+06
1.60E+06 ->   1.60E+06