Преобразование научного представления в десятичное число с сохранением формата данных как float64.

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

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

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

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

Решения, подобные этому:

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

преобразует данные в строковый объект, который мне не нужен.

вот мой код:

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

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

print(stdev.dtype)

Результат: float64

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

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


person questioneer1    schedule 16.10.2019    source источник
comment
Возможный дубликат преобразовать экспоненциальное представление в десятичное - python   -  person mishsx    schedule 16.10.2019
comment
Научное обозначение - это метод отображения, а не фактическое число. 0.00005 отображается как 5e-05. Вы можете использовать формат печати для управления отображением, например: "%f"%0.00005. Посмотрите документы для np.set_printoptions, чтобы узнать, как вы можете управлять отображением массивов numpy.   -  person hpaulj    schedule 16.10.2019


Ответы (2)


Я предполагаю, что это просто вопрос представления, поскольку тип данных, как вы показали, по-прежнему 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

Ознакомьтесь с документацией по формату строк.

person MarcoP    schedule 16.10.2019
comment
print("{:.15f}".format(x)) эта команда может создать немедленный вывод в виде десятичного числа без строковых спецификаций. Однако, когда я назначаю этот вывод переменной, такой как y, например: y="{:.15f}".format(x), объект y больше не является плавающим. Он становится строкой. - person questioneer1; 16.10.2019
comment
Боюсь, тогда я не понимаю вашего вопроса. Когда вы печатаете число с плавающей запятой, оно преобразуется в строку с помощью python, поэтому вы всегда видите распечатываемую строку. В зависимости от количества десятичных цифр он может быть напечатан в экспоненциальном представлении (см. цифры">stackoverflow.com/questions/24187684/). Тем не менее способ хранения числа с плавающей запятой в памяти не зависит от того, как вы видите его распечатанным функцией печати. - person MarcoP; 16.10.2019

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

В Vanilla Python нет понятия float64 (это не очень удобно для точных вычислений), но numpy есть.

введите здесь описание изображения

person volcano    schedule 20.10.2019