浮動小数点数の指数を印刷する桁数を設定することはできますか?私は私が印刷したい何Python - 指数部の桁数
f = 0.0000870927939438012
>>> "%.14e"%f
'8.70927939438012e-05'
>>> "%0.14e"%f
'8.709279e-005'
があり、現在3
に設定したい: '8.70927939438012e-005'
浮動小数点数の指数を印刷する桁数を設定することはできますか?私は私が印刷したい何Python - 指数部の桁数
f = 0.0000870927939438012
>>> "%.14e"%f
'8.70927939438012e-05'
>>> "%0.14e"%f
'8.709279e-005'
があり、現在3
に設定したい: '8.70927939438012e-005'
それを制御する方法はありません、最良の方法は、関数を記述することですこれは例えば
def eformat(f, prec, exp_digits):
s = "%.*e"%(prec, f)
mantissa, exp = s.split('e')
# add 1 to digits as 1 is taken by sign +/-
return "%se%+0*d"%(mantissa, exp_digits+1, int(exp))
print eformat(0.0000870927939438012, 14, 3)
print eformat(1.0000870927939438012e5, 14, 3)
print eformat(1.1e123, 4, 4)
print eformat(1.1e-123, 4, 4)
出力:
8.70927939438012e-005
1.00008709279394e+005
1.1000e
1.1000e-
Anurag、これを文字列として操作し、指数の3桁を取得するにはさまざまな方法があります。私が関心を持っていたのは、私の記事の2番目の例では、Pythonがネイティブで3桁の数字を使用することがあるため、文字列操作を避けることです。あなたが上でも尋ねたように、なぜそれがそうするのかまだ分かりません。私は実験中にそれを見つけました。 – nmadzharov
@nmadzharov私はPythonの2.7で指数部に3桁は表示されませんが、実際に何をしているのかを見るためにPythonコードを調べてみる必要があります。 –
@Anurag: Python 2.5のいくつかのプラットフォームでは数字の指数が表示されました。これはPython 2.6で修正されました(私は信じています)。詳細についてはhttp://bugs.python.org/issue1600を参照してください。 –
どのように第二の例は以下の精度と指数の3桁の数字を持って来ますか? –
私のマシン "%e"%fは "8.709279e-05"を出力し、 "%0.14e"%fは "8.70927939438012e-05"を出力します。また、mpmathなどのライブラリではより高い精度が可能でなければなりません。しかし、あなたのニーズに合っているかどうかはわかりません。 – aruseni