Я пытаюсь отформатировать числа в научной нотации с показателями основания 10, например, написать 0,00123 как 1,23x10 –3 , используя Python 3.
Я нашел эту замечательную функцию, котораяпечатает 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://stackoverflow.com/a/8651690/8542513 для форматирования верхнего индекса, но я не уверен, как 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'