Преобразуйте научную запись в десятичное число, сохраняя формат данных как float64 - PullRequest
0 голосов
/ 16 октября 2019

У меня простой вопрос.

Я использую формулу numpy.std для расчета стандартного отклонения. Тем не менее, результат приходит в виде числа в научной нотации.

Поэтому я спрашиваю, как преобразовать научную нотацию в десятичное число и при этом сохранить формат данных как float64?

ИлиЕсть ли обходной путь для получения начального результата в виде десятичного числа?

Решения, такие как это:

stdev = format(stdev, '.10f')

преобразует данные в строковый объект, который я надеваюне хочу.

Вот мой код:

stdev = numpy.std(dataset)
print(stdev)

Результат: 4.999999999999449e-05

print(stdev.dtype)

Результат: float64

Ожидаемый результат

Я хочу получить результат в виде десятичного числа в формате float64.

Ответы [ 2 ]

0 голосов
/ 20 октября 2019

Вы путаете представление и внутреннюю память. По умолчанию Python покажет значение в научной форме. Вы можете использовать другую форму представления - но вы не можете влиять на само значение.

Vanilla Python не имеет понятия float64 (это не так уж хорошо для точных вычислений) - но numpy делает

enter image description here

0 голосов
/ 16 октября 2019

Полагаю, это просто вопрос представления, поскольку тип данных, как вы показали, все еще float64.

Если это так, вы можете просто напечатать в виде отформатированной строки:

>>> x = 123456789e-15
>>> print(x)
1.23456789e-07

>>> print("{:.15f}".format(x))
0.000000123456789

.15f указывает, что вы хотите использовать формат с плавающей запятой с 15 десятичными знаками.

В Python 3.6 вы можете использовать формат f-строки:

print(f"{x:.15f}")
0.000000123456789

Посмотрите на документация формата строки

...