Ложь о числах с плавающей запятой, которую каждый программист узнает слишком поздно
NCOT Technology
0:00 / 0:00
Ложь о числах с плавающей запятой, которую каждый программист узнает слишком поздно
4 748 просмотров · 3 месяца назад
NCOT Technology
31,2 тыс. подписчиков
4 748 просмотров · 3 месяца назад
Почему Python выдает ошибку, что 0,1 + 0,2 = 0,30000000000000004?
Ответ кроется в стандарте IEEE 754 — стандарте вычислений с плавающей запятой, встроенном в каждый процессор на планете.
В этом видео мы заглянем под капот: от пределов арифметики с фиксированной запятой, через научную запись в двоичном формате, до ручного преобразования числа 3,14 в его 32-битное представление IEEE 754 — и докажем это на языке C с помощью алгоритма объединения, который считывает необработанные биты непосредственно из памяти.
Мы также рассмотрим, что происходит на границах: деление на ноль приводит к бесконечности вместо сбоя. Деление нуля на ноль дает NaN — Not a Number (не число). IEEE 754 определяет не только «счастливый путь», но и все «странные» пути.
━━━━━━━━━━━━━━━━━━━━━━━━
📌 ГЛАВЫ
━━━━━━━━━━━━━━━━━━━━━━━━━
0:00 Проблема 0,1 + 0,2
1:01 Арифметика с фиксированной запятой
5:57 Научная нотация и рождение чисел с плавающей запятой
6:48 Стандарт IEEE 754
7:01 Преобразование 3,14 в 32-битное число с плавающей запятой
11:12 Доказательство на языке C
13:24 Крайние случаи: бесконечность и NaN
15:20 Почему стандарт IEEE 754 изменил всё
━━━━━━━━━━━━━━━━━━━━━━━━━
🔗 ССЫЛКИ И РЕСУРСЫ
━━━━━━━━━━━━━━━━━━━━━━━━━
☕ Поддержите канал на Patreon (+ 24-часовой ранний доступ, без рекламы):
/ ncot_tech
Научный калькулятор - Thirunavukkarasye-Raveendran, CC BY 4.0 https://creativecommons.org/licenses/..., via Wikimedia Commons
Снимок кристалла Intel 486 DX2 — этот файл был получен из: Intel 80486 DX2 die.JPG by Pauli Rautakorpi CC BY 3.0
Музыка: Karl Casey @ White Bat Audio