24

浮動小数点数の指数を出力するために使用する桁数を設定することはできますか? 3に設定したいです。

現在、

f = 0.0000870927939438012
>>> "%.14e"%f
'8.70927939438012e-05'
>>> "%0.14e"%f
'8.709279e-005'

印刷したいものは次のとおりです。 '8.70927939438012e-005'

4

4 に答える 4

22

それを制御する方法はありません。最善の方法は、このための関数を作成することです。

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+0123
1.1000e-0123
于 2012-03-28T16:22:07.273 に答える