web-dev-qa-db-fra.com

Convertir la notation scientifique en décimales

J'ai des nombres dans un fichier (donc, sous forme de chaînes) en notation scientifique, comme:

8.99284722486562e-02 

mais je veux les convertir en:

0.08992847

Existe-t-il une fonction intégrée ou une autre manière de le faire?

12
user3223818

Je suis sûr que vous pouvez le faire avec:

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

Comme vous le savez peut-être, les nombres à virgule flottante ont des problèmes de précision. Par exemple, évaluez:

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

Au lieu de cela, vous pouvez utiliser la classe Decimal . Sur l'interpréteur 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

La notation scientifique peut être convertie en nombre à virgule flottante avec float .

Dans [1]: float("8.99284722486562e-02")
Sortie [1]: 0,0899284722486562

float peut être arrondi avec format puis float peut être utilisé sur la chaîne pour renvoyer le flottant arrondi final.

Dans [2]: float("{:.8f}".format(float("8.99284722486562e-02")))
Sortie [2]: 0,08992847

0
jesterjunk