Сложение двух чисел с плавающей запятой без потери точности

YOUTUBE · 19.11.2025 09:21

Ключевые темы и таймкоды

Сложение чисел с плавающей запятой

0:00
  • В видео обсуждается проблема сложения двух чисел с плавающей запятой без потери точности.
  • Для понимания темы необходимо владеть двоичной арифметикой с плавающей запятой и понимать, почему одна десятая плюс две десятых не равно три десятых.

Представление суммы без погрешности

5:53
  • В результате сложения чисел с плавающей запятой всегда будет точно представимое число типа дабл.
  • Это означает, что пара чисел ст всегда дает возможность сохранить сумму чисел а плюс б без погрешности.

Алгоритм вычисления суммы без погрешности

7:11
  • Алгоритм вычисляет пару ст чисел, для которых с плюс т равно а плюс б.
  • Основная цель видео - объяснить сложные вещи простым языком.

Математическое доказательство

9:53
  • В книге, указанной на слайде, есть строгое математическое доказательство, но оно не умещается в формат научно-популярного видео.
  • Суть доказательства: в строках 2 и 3 алгоритма не будет выполняться округление, а значит, т равно б минус с.

Алгоритм сложения чисел

10:56
  • В видео объясняется алгоритм сложения чисел с использованием типа данных "дабл" в языке программирования C#.
  • Алгоритм работает для случаев, когда оба числа полностью заполняют своим антисы единичными битами, и при этом одно из чисел меньше другого по модулю.
  • В случае, когда одно из чисел меньше другого по модулю, алгоритм работает только для случаев, когда экспонента первого числа больше или равна экспоненте второго числа.

Второй алгоритм сложения чисел

13:45
  • Второй алгоритм сложения чисел работает для случаев, когда одно из чисел больше либо равно другому по модулю.
  • Он использует шесть операций вместо трех, но при этом не приводит к ошибкам округления.

Теоремы о точности сложения чисел

16:04
  • В видео приводятся три теоремы о точности сложения чисел: если сумма чисел является деноализованным числом, то сумма чисел является точно представимым числом; если сумма чисел по модулю не превосходит одного из чисел, то число является точно представимым; если вычитаемое число находится в диапазоне от уменьшаемого числа до удвоенного уменьшаемого числа, то разность чисел является точно представимым числом.
  • В видео также упоминается "катастрофа" - ошибка критического сокращения старших значащих битов, которая не является ошибкой вычисления, а лишь высвечивает уже имеющуюся погрешность.