我试图使用基数为10的指数科学计数法格式化数字,例如将0.00123写成1.23x10–3,使用Python 3。
我找到了这个很棒的函数,它打印1.23x10^-3,但是如何将插入符指数替换为上标呢?
该函数是从https://stackoverflow.com/a/29261252/8542513修改而来。
我尝试结合https://dev59.com/D2oy5IYBdhLWcg3wScJB#8651690的答案格式化上标,但我不确定sympy如何处理变量。
这会返回:TypeError: 不支持使用 ** 或 pow() 运算符的类型为 'str' 和 'int' 的操作数。
我找到了这个很棒的函数,它打印1.23x10^-3,但是如何将插入符指数替换为上标呢?
def sci_notation(number, sig_fig=2):
ret_string = "{0:.{1:d}e}".format(number, sig_fig)
a,b = ret_string.split("e")
b = int(b) # removed leading "+" and strips leading zeros too.
return a + "x10^" + str(b)
print(sci_notation(0.001234, sig_fig=2)) # Outputs 1.23x10^-3
该函数是从https://stackoverflow.com/a/29261252/8542513修改而来。
我尝试结合https://dev59.com/D2oy5IYBdhLWcg3wScJB#8651690的答案格式化上标,但我不确定sympy如何处理变量。
from sympy import pretty_print as pp, latex
from sympy.abc import a, b, n
def sci_notation(number, sig_fig=2):
ret_string = "{0:.{1:d}e}".format(number, sig_fig)
a,b = ret_string.split("e")
b = int(b) #removed leading "+" and strips leading zeros too.
b = str(b)
expr = a + "x10"**b #Here's my problem
pp(expr) # default
pp(expr, use_unicode=True)
return latex(expr)
print(latex(sci_notation(0.001234, sig_fig=2)))
这会返回:TypeError: 不支持使用 ** 或 pow() 运算符的类型为 'str' 和 'int' 的操作数。
n
,并使其看起来像一个(格式不良的)指数。 - Ma0