Python でフォーマット文字列を使用すると、数値を「科学表記法」で簡単に出力できます。
>> print '%g'%1e9
1e+09
数値を LaTeX 形式、つまり 1\times10^{+09} でフォーマットする最も簡単な方法は何ですか?
Python でフォーマット文字列を使用すると、数値を「科学表記法」で簡単に出力できます。
>> print '%g'%1e9
1e+09
数値を LaTeX 形式、つまり 1\times10^{+09} でフォーマットする最も簡単な方法は何ですか?
siunitx LaTeX パッケージは、結果の文字列を解析して有効な LaTeX に変換することなく、python float 値を直接使用できるようにすることで、これを解決します。
>>> print "\\num{{{0:.2g}}}".format(1e9)
\num{1e+09}
LaTeX ドキュメントがコンパイルされると、上記のコードは に変わります
。andybuckley がコメントで指摘しているように、プラス記号は siunitx で受け入れられない可能性があるため (私はテストしていません)、.repace("+", "")
結果に対して a を実行する必要がある場合があります。
使用siunitx
が何らかの理由でテーブルから外れている場合は、次のようなカスタム関数を記述します。
def latex_float(f):
float_str = "{0:.2g}".format(f)
if "e" in float_str:
base, exponent = float_str.split("e")
return r"{0} \times 10^{{{1}}}".format(base, int(exponent))
else:
return float_str
テスト:
>>> latex_float(1e9)
'1 \\times 10^{9}'
frexp10
次の関数を書くことができます:
def frexp10(x):
exp = int(math.floor(math.log10(abs(x))))
return x / 10**exp, exp
LaTeXスタイルでのフォーマットは次のようになります。
'{0}^{{{1:+03}}}'.format(*frexp10(-1.234e9))