web-dev-qa-db-ja.com

科学表記を小数に変換する

次のように、ファイルに数値を(文字列として)科学表記法で記述しています。

8.99284722486562e-02 

しかし、私はそれらを次のように変換したい:

0.08992847

組み込み関数や他の方法はありますか?

12
user3223818

私はあなたがこれでこれを行うことができると確信しています:

float("8.99284722486562e-02")
# and now with 'rounding'
"{:.8f}".format(float("8.99284722486562e-02"))
10
m0dem

ご存知かもしれませんが、浮動小数点数には精度の問題があります。たとえば、次を評価します。

>>> (0.1 + 0.1 + 0.1) == 0.3
False

代わりに、 Decimal クラスを使用できます。 pythonインタプリタで:

>>> import decimal
>>> tmp = decimal.Decimal('8.99284722486562e-02')
Decimal('0.0899284722486562')
>>> decimal.getcontext().prec = 7
>>> decimal.getcontext().create_decimal(tmp)
Decimal('0.08992847')
0
User

科学表記法は、 float を使用して浮動小数点数に変換できます。

[1]内:float("8.99284722486562e-02")
アウト[1]:0.0899284722486562

floatformat で丸めることができ、次に float を使用できます最終的に丸められたfloatを返す文字列。

[2]内:float("{:.8f}".format(float("8.99284722486562e-02")))
アウト[2]:0.08992847

0
jesterjunk