TGViewer
Python/ django Python/ django @pythonl · 58.5K subscribers
Post #3662 7.88K
🖥 Ляп в Питоне: x + 1.0 < x

▶️Хотите взорвать себе мозг?
При смешивании типов возможно неочевидное поведение, можете проверить:
>>> x = (1 << 53) + 1
>>> x + 1.0 < x
True


▶️Здесь всё дело в том, что в одной части неравенства при приведении x к другому типу была потеряна точность, а в другой части — нет.

Значение переменной x конвертируется в тип float.
При этом x непредставим точно в виде float, поэтому выбирается ближайшее (меньшее здесь) представимое число: x —> float(x-1). Поэтому сумма получается неточной, вся цепочка выглядит так:
x+1.0 -> float(x-1)+1.0 -> (x) -> float(x-1)

Сравнение float < int происходит точно. Значение x (int) математически больше x+1.0 (float).

Как-то так.

📎 Вот ещё некоторые примеры смешения типов

@pythonl
  • ❤ 9
  • 👍 6
  • 🔥 4
  • 😱 1
More from @pythonl
  1. Oct 17, 2026🧠 Python + Prolog: нейросети и строгая логика в одном процессе Clausal Prolog объединяет…
  2. Oct 17, 2026🔥 Хочешь быстрее расти в IT? Хватит учиться в одиночку Окружение решает больше, чем кажет…
  3. Oct 16, 2026🧠 Tencent открыла Hy Memory: общую память для ИИ-ассистентов и редакторов кода Система об…
  4. Oct 15, 2026🖥 Datadog научила профилировщик Python понимать asyncio: флеймграфы со «стеками из стеков…
  5. Oct 14, 2026📱 35 млрд параметров на смартфоне с потреблением около 3 ГБ оперативной памяти. OpenBMB п…
  6. Oct 12, 2026⚡️ Overmind - open-source слой для автоматической оптимизации AI-агентов. Вместо ручного т…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →