Как подавить научную нотацию в Python?

Вот мой код:

x = 1.0 y = 100000.0 print x/y 

Мой коэффициент отображается как 1.00000e-05

Есть ли способ подавить научную нотацию и сделать ее отображаемой как 0.00001 ? Как преобразовать научную нотацию в float .

Заранее спасибо.
Это несколько смешно спрашивать, но я еще не понял, как это сделать. Я собираюсь использовать результат как строку.

  • Как дублировать строки на основе столбца счетчика
  • Преобразование объекта строки sqlalchemy в python dict
  • Ошибка импорта Django - нет модуля с именем django.conf.urls.defaults
  • Пакет Python: файлы данных правильно помещаются в файл tar.gz, но не установлены в виртуальную среду
  • Как я могу скрыть окно консоли при замораживании приложений wxPython с помощью cxFreeze?
  • Могу ли я включить один элемент в список без инструкции else в python?
  • Невозможно импортировать matplotlib.pyplot в python 3
  • как отдать ответ?
  • 7 Solutions collect form web for “Как подавить научную нотацию в Python?”

     '%f' % (x/y) 

    но вам нужно управлять точностью. например,

     '%f' % (1/10**8) 

    будут отображаться только нули.
    подробная информация содержится в документах

    Или для Python 3 эквивалентное старое форматирование или форматирование нового стиля

    С более новыми версиями Python (2.6 и более поздних) вы можете использовать ''.format() для выполнения того, что предложил @SilentGhost:

     '{0:f}'.format(x/y) 

    Используя новую версию ''.format (также не забудьте указать, сколько цифр после . Вы хотите отобразить, это зависит от того, насколько мал – плавающее число). См. Этот пример:

     >>> a = -7.1855143557448603e-17 >>> '{:f}'.format(a) '-0.000000' 

    как показано выше, значение по умолчанию – 6 цифр! Это не полезно для нашего примера, поэтому вместо этого мы могли бы использовать что-то вроде этого:

     >>> '{:.20f}'.format(a) '-0.00000000000000007186' 

    Обновить

    Начиная с Python 3.6, это можно упростить с помощью нового форматированного строкового литерала :

     >>> f'{a:.20f}' '-0.00000000000000007186' 

    Помимо ответа SG, вы также можете использовать модуль Decimal:

     from decimal import Decimal x = str(Decimal(1) / Decimal(10000)) # x is a string '0.0001' 

    Это будет работать для любого экспонента:

     def getExpandedScientificNotation(flt): str_vals = str(flt).split('e') coef = float(str_vals[0]) exp = int(str_vals[1]) return_val = '' if int(exp) > 0: return_val += str(coef).replace('.', '') return_val += ''.join(['0' for _ in range(0, abs(exp - len(str(coef).split('.')[1])))]) elif int(exp) < 0: return_val += '0.' return_val += ''.join(['0' for _ in range(0, abs(exp) - 1)]) return_val += str(coef).replace('.', '') return return_val 

    Это использует ответ капитана Огумбера , но с 2 дополнениями.

    1), позволяя функции получать номера без научных обозначений и просто возвращать их как есть (так что вы можете много вводить, чтобы некоторые из чисел были 0,00003123 против 3.123e-05 и все еще имеют функцию работы.

    2) добавлена ​​поддержка отрицательных чисел. (в исходной функции отрицательное число закончится как 0,0000-108904 с -1.08904e-05)

     def getExpandedScientificNotation(flt): was_neg = False if not ("e" in flt): return flt if flt.startswith('-'): flt = flt[1:] was_neg = True str_vals = str(flt).split('e') coef = float(str_vals[0]) exp = int(str_vals[1]) return_val = '' if int(exp) > 0: return_val += str(coef).replace('.', '') return_val += ''.join(['0' for _ in range(0, abs(exp - len(str(coef).split('.')[1])))]) elif int(exp) < 0: return_val += '0.' return_val += ''.join(['0' for _ in range(0, abs(exp) - 1)]) return_val += str(coef).replace('.', '') if was_neg: return_val='-'+return_val return return_val 

    Если это string используйте для этого встроенный float для преобразования, например: print( "%.5f" % float("1.43572e-03")) : 0.00143572

    Interesting Posts
    Python - лучший язык программирования в мире.