Дополнительно
Преобразование float в строку, без округления его
Я'м делаю программу, которая, по причинам, не нуждающихся в разъяснении, требует поплавка должен быть преобразован в строку, которая будет расценено с LEN(). Однако STR(число с плавающей точкой(х)) результаты в X округления при преобразовании в строку, которая бросает всю штуку. Знает ли кто-нибудь фикс для этого? Здесь'ы код используется, если вы хотите знать:
len(str(float(x)/3))
83
4
Какая-то форма округления является часто неизбежным при работе с числами с плавающей запятой. Это потому, что числа, которые можно выразить точно в основание 10 не всегда может быть выражен точно в основание 2 (который ваш компьютер использует).
Например:
В этом случае, вы'вновь увидев .1 преобразуется в строку, используя
предст
:Я считаю питон отрубает несколько последних цифр при использовании (ул.) для того, чтобы обойти эту проблему, но это'ы частичное решение, которое не'т заменить понимание того, что's идя дальше.
Я'м не уверен точно, что проблем с "закругления" это вызывает у вас. Возможно, вы могли бы сделать лучше с форматированием строки, как способ более точно контролировать свой выходной?
например
Документации.
Однако я должен сказать, что это'т так надежны, как вы думаете.
Поплавки вводятся/отображается в виде десятичных чисел, а компьютер (по сути, стандартной библиотеки C) сохраняет их в виде двоичных. Вы получаете некоторые побочные эффекты от этого перехода:
Объяснение о том, почему это происходит в этой главе на языке Python учебник.
В качестве решения можно использовать тип, который специально отслеживает десятичных чисел, таких как Python'ы
десятичное.Десятичное
:Другие ответы уже отмечали, что представление числа с плавающей запятой-это очень деликатный вопрос, мягко говоря.
Поскольку вы Don'т дают достаточно контекста вашего вопроса, я не знаю, если десятичный модуль может быть полезным для ваших нужд:
http://docs.python.org/library/decimal.html
Помимо прочего вы можете явно указать в точности, что вы хотите получить (из документации):
Простой пример из моей строке (в Python 2.6):
Может быть, это может помочь? десятичное число в Python stdlib с 2.4, с дополнениями в Python 2.6.
Надеюсь, что это помогает, Франческо
Я знаю, что это слишком поздно, но для тех, кто приезжает сюда в первый раз, я'd, как запостить решение. У меня есть float значение
индекс
и строку `imgfile
и у меня была такая же проблема как у вас. Вот как я решил вопросВыход
Вы можете изменить этот пример форматирования как за вашего удобства.