Преобразуйте число с плавающей запятой в определенную точность, затем скопируйте в String
У меня есть число с плавающей запятой, например 135.12345678910
. Я хочу связать это значение с строкой, но хочу только 135.123456789
. С печатью я могу легко сделать это, выполнив что-то вроде:
print "%.9f" % numvar
с numvar
, являющимся моим первоначальным номером. Есть ли простой способ сделать это?
Ответы
Ответ 1
С python < 3 (например, 2.6 [см. Комментарии] или 2.7), есть два способа сделать это.
# Option one
older_method_string = "%.9f" % numvar
# Option two
newer_method_string = "{:.9f}".format(numvar)
Но обратите внимание, что для версий python выше 3 (например, 3.2 или 3.3) второй вариант предпочитаемый.
Для получения дополнительной информации о втором варианте я предлагаю эту ссылку на форматирование строк из документов python.
И для получения дополнительной информации о варианте один, эта ссылка будет достаточной и содержит информацию о различных флагах.
UPDATE: Python 3.6 (официальная версия в декабре 2016 года) добавит строковый литерал f
, подробнее см. здесь, который расширяет метод str.format(использование фигурных скобок, так что f"{numvar:.9f}"
решает исходную задачу).
Ответ 2
Использование round:
>>> numvar = 135.12345678910
>>> str(round(numvar,9))
'135.123456789'
>>>
Ответ 3
Python 3.6 | 2017
Чтобы это было ясно, вы можете использовать форматирование f-string. Это почти тот же синтаксис, что и метод format
, но сделать его немного лучше.
Пример:
print(f'{numvar:.9f}')
Подробнее о новой строке f:
Ответ 4
Не печатает, что делает форматирование, это свойство строк, поэтому вы можете просто использовать
newstring = "%.9f" % numvar
Ответ 5
Если точность пока неизвестна до выполнения, эта другая опция форматирования полезна:
>>> n = 9
>>> '%.*f' % (n, numvar)
'135.123456789'
Ответ 6
Функция str имеет ошибку. Пожалуйста, попробуйте это. Вы увидите "0,196553", но правый выход "0,196554". Значение параметра str для функции str равно ROUND_HALF_UP.
>>> value=0.196553500000
>>> str("%f" % value).replace(".", ",")