Почему 9007199254740993 != 9007199254740993.0? ⇐ Python

Программы на Python
Anonymous
Почему 9007199254740993 != 9007199254740993.0?

Сообщение Anonymous »

Результат этого сравнения меня удивил (CPython 3.4):

Код: Выделить всё

>>> 9007199254740993 == 9007199254740993.0
False
Насколько я понимаю в документации, левый операнд должен быть приведен к числу с плавающей запятой, чтобы соответствовать типу правого операнда:

Python полностью поддерживает смешанную арифметику: когда оператор двоичной арифметики имеет операнды разных числовых типов, операнд с «более узким» типом расширяется до операнда другого типа, где целое число уже, чем с плавающей запятой, что уже, чем комплексный. При сравнении чисел смешанного типа используется то же правило.

Похоже, этого не происходит:

Код: Выделить всё

>>> float(9007199254740993) == 9007199254740993.0
True
Что здесь происходит?

Подробнее здесь: https://stackoverflow.com/questions/314 ... 54740993-0

Вернуться в «Python»