Почему 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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