2015-04-24 5 views
2

у меня есть номера в файле (так, как строки) в научной нотации, как:Преобразование научной нотации в десятичные

8.99284722486562e-02 

, но я хочу, чтобы преобразовать их в:

0.08992847 

Есть любая встроенная функция или любой другой способ сделать это?

+2

Вы считаете, что ищете отдельно для: 1. Как преобразовать строки в числа; и 2. Как преобразовать числа в строки? Это не так сложно. – jonrsharpe

ответ

6

Я уверен, что вы можете сделать это с помощью:

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

Вам нужно отформатировать в определенном месте. –

+0

@MalikBrahimi: Что именно вы имеете в виду? – m0dem

+0

Ответ должен подняться до семи, ваш ответ выходит за пределы этой точки. –

1

Научного обозначение может быть преобразован в число с плавающей точкой с float.

В [1]: float("8.99284722486562e-02")
Из [1]: 0,0899284722486562

float может быть закруглен с format, а затем float может быть использован на строке, чтобы вернуть окончательный закругленный поплавок.

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

0

Как вы знаете чисел с плавающей точкой имеют точность проблемы. Например, оценка:

>>> (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') 
Смежные вопросы