Python: подавить экспоненциальный формат (т. Е. 9e-10) при преобразовании с плавающей запятой в строку? - PullRequest
1 голос
/ 13 марта 2011

Я хочу использовать python для написания кода для другого языка, который не понимает экспоненциально отформатированные поплавки.Есть ли простой способ получить python, чтобы при преобразовании чисел с плавающей запятой использовать длинную форму записи (IE 0.000000009 вместо 9e-9)?Я пробовал "% (foo) f", но он сокращает десятичное число (0,00000).

Ответы [ 2 ]

2 голосов
/ 13 марта 2011

Попробуйте что-то вроде

"%.16f" % f

Если число слишком мало, будет по-прежнему использоваться экспоненциальный формат, поэтому вам придется рассматривать этот случай отдельно, например

"%.16f" % f if f >= 1e-16 else "0.0"
0 голосов
/ 13 марта 2011

Используйте определенный спецификатор формата, например:

>>> f=9*(10**-9)
>>> str(f)
'9e-09'
>>> "%.23f" % f
'0.00000000900000000000000'

ОБНОВЛЕНИЕ (благодаря @Sven): количество цифр, которые вы хотите использовать, зависит от величины числа.если у вас большие числа (например, несколько триллионов), вам, очевидно, не понадобятся десятичные дроби.для крошечных номеров вам нужно больше.Это действительно ужасное представление.

...