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?
Je suis sûr que vous pouvez le faire avec:
float("8.99284722486562e-02")
# and now with 'rounding'
"{:.8f}".format(float("8.99284722486562e-02"))
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')
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