Почему str (float) возвращает больше цифр в Python 3, чем в Python 2?
В Python 2.7repr
изfloat
возвращает ближайшее десятичное число длиной до 17 цифр; это достаточно точно, чтобы однозначно идентифицировать каждое возможное значение с плавающей точкой IEEE.str
изfloat
работал аналогично, за исключением того, что он ограничивал результат до 12 цифр; в большинстве случаев это более разумный результат, который изолирует вас от небольших различий между двоичным и десятичным представлением.
Демо-версия Python 2:http://ideone.com/OKJtxv
print str(1.4*1.5)
2.1
print repr(1.4*1.5)
2.0999999999999996
В Python 3.2 это появляетсяstr
а такжеrepr
вернуть то же самое.
Демо-версия Python 3:http://ideone.com/oAKRsb
print(str(1.4*1.5))
2.0999999999999996
print(repr(1.4*1.5))
2.0999999999999996
Есть ли PEP, который описывает изменение, или какое-то другое заявление от кого-то ответственного?