Вот мой код:
x = 1.0
y = 100000.0
print x/y
Мой коэффициент отображается как 1.00000e-05
.
Есть ли способ подавить научную запись и заставить ее отображать как
0.00001
? Я собираюсь использовать результат в виде строки.
python
floating-point
Matt
источник
источник
Ответы:
но вам нужно управлять точностью самостоятельно. например,
будет отображать только нули.
подробности в документах
Или для Python 3 эквивалентное старое форматирование или более новое форматирование стиля
источник
Используя более новую версию
''.format
(также не забудьте указать, сколько цифр после того, как.
вы хотите отобразить, это зависит от того, насколько маленьким является плавающее число). Смотрите этот пример:как показано выше, по умолчанию 6 цифр! Это не полезно для нашего примера, поэтому мы могли бы использовать что-то вроде этого:
Обновить
Начиная с Python 3.6, это можно упростить с помощью нового отформатированного строкового литерала следующим образом:
источник
f"{a:.{precision}f}"
В более новых версиях Python (2.6 и более поздних) вы можете использовать
''.format()
для выполнения предложенного @SilentGhost:источник
>>> print('{:f}'.format(0.000000123))
0.000000
'{0:.10f}'
Другой вариант, если вы используете панд и хотите отключить научное обозначение для всех поплавков, это настроить параметры панд.
источник
Большинство ответов выше требуют от вас указать точность. Но что, если вы хотите отображать числа с плавающей точкой, как это, без лишних нулей:
numpy
имеет ответ:np.format_float_positional
источник
Это будет работать для любого показателя:
источник
Это использует ответ капитана огурца , но с 2 дополнениями.
1) позволяя функции получать номера ненаучных обозначений и просто возвращать их как есть (так что вы можете добавить много входных данных, что некоторые числа равны 0,00003123 против 3.123e-05 и по-прежнему работают).
2) добавлена поддержка отрицательных чисел. (в исходной функции отрицательное число будет заканчиваться как 0,0000-108904 от -1.08904e-05)
источник
В дополнение к ответу SG вы также можете использовать десятичный модуль:
источник
Если это так,
string
то используйте встроенное вfloat
него преобразование, например:print( "%.5f" % float("1.43572e-03"))
answer:0.00143572
источник
Поскольку это лучший результат в Google, я опубликую здесь, не найдя решения своей проблемы. Если вы хотите отформатировать отображаемое значение объекта с плавающей точкой и оставить его с плавающей точкой, а не строку, вы можете использовать это решение:
Создайте новый класс, который изменяет способ отображения значений с плавающей запятой.
Вы можете изменить точность самостоятельно, изменив целочисленные значения в
{:f}
источник
Используя 3.6.4, у меня была похожая проблема, что случайным образом число в выходном файле было бы отформатировано с научной нотацией при использовании этого:
Все, что я должен был сделать, чтобы это исправить, это добавить 'f':
источник
Начиная с версии 3.6 (возможно, также работает с более старыми версиями 3.x), это мое решение:
Цель
precision
расчета - убедиться, что у нас достаточно точности, чтобы не попадать в научную нотацию (точность по умолчанию - 6).dec_precision
Аргумент добавляет дополнительную точность использовать для знаков после запятой. Поскольку это используетn
формат, незначительные нули не будут добавлены (в отличие отf
форматов).n
также позаботится о рендеринге уже круглых целых чисел без десятичной дроби.n
действительно требуетfloat
ввода, таким образом, актерский состав.источник