Имеет ли встроенная функция round() в Python между 2.4 и 2.7?Изменение в Python, построенное в функции round() между 2.4 и 2.7
Python 2.4:
Python 2.4.6 (#1, Feb 12 2009, 14:52:44)
[GCC 3.4.6 20060404 (Red Hat 3.4.6-8)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> f = 1480.39499999999998181010596454143524169921875
>>> round(f,2)
1480.4000000000001
>>>
Python 2.7:
Python 2.7.1 (r271:86832, May 13 2011, 08:14:41)
[GCC 3.4.6 20060404 (Red Hat 3.4.6-11)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> f = 1480.39499999999998181010596454143524169921875
>>> round(f, 2)
1480.39
>>>
Есть в любом случае, чтобы получить поведение Python 2.4 обратно?
Я знаю, что правильным ответом является, конечно, использование десятичного арифметического модуля. К сожалению, на данный момент это не вариант, учитывая ограничения по времени.
Update
Для контекста я сравниваю значение в двух системах, одна из которых использует десятичное представление, а другая с плавающей точкой одной. Это может (или не обязательно) быть законным различием между системами, которые необходимо проверить дальше, поэтому я буду консультироваться с пользователями и заниматься им на уровне «отчетности», а не в точке, где я получаю данные из систем ,
Благодарим за помощь!
Вы предоставляете гораздо больше цифр, чем может обрабатывать внутреннее представление - возможно, что разница заключается в интерпретации ввода, а не в 'round'. –
P.S. Ответ Python 2.7 кажется мне более правильным, я бы не ожидал найти вариант для доставки неверных результатов. –
«К сожалению, этот [десятичный модуль], вероятно, на данный момент не является опцией с учетом временных ограничений.« Я сомневаюсь, что это действительно так, по крайней мере, вы не должны ожидать, что поплавок даст точный результат или точное округление поскольку поплавок неточно по определению. Спасите себя от хлопот и конвертируйте свою программу в десятичную. –