Pythonの数値を指数表記で出力する方法

intだったりfloatで与えられた数値をstr型で出力する方法いろいろ。 意外と手こずった。


f = 1234.56をstr型に変換する

そのまま

str(f)
# '1234.56'

指数表記、有効数字

formatを使うのが一番手っ取り早い

'{:.2g}'.format(f)
# '1.2e+3'

など

このあたりが参考になるかも

Python, formatで書式変換(0埋め、指数表記、16進数など) | note.nkmk.me

自由形

1.2×103と表示したかったのでその方法

まず指数の肩の部分とfactorの部分を求める

a = int(math.log10(f)) 
b = round(f / 10**a,1)
# a = 3
# b = 1.2

そしてこれらを無理やり一つにして表示する

import matplotlib.pyplot as plt
plt.text(0.5,0.5,str(b)+'×'+r'$10^{'+str(a)+'}$')

で完成。

tex形式を使うけど$で囲まれた間に+でいろいろ結合しても問題ないようだ。