18.05 Нюансы работы с числами с плавающей запятой
Cherepanov Vladimir
0:00 / 0:00
18.05 Нюансы работы с числами с плавающей запятой
26 просмотров · 3 месяца назад
Cherepanov Vladimir
133 подписчика
26 просмотров · 3 месяца назад
https://drive.google.com/file/d/1HhER...
Формат с плавающей запятой: мантисса, экспонента
Большие целые значения без fixed печатаются в научном формате
Типы данных с плавающей запятой: double, long double, float, __float128, decimal в Python и C#
Извлечение квадратного корня из целых чисел:
sqrt(10^18 - 1) == 10^9
sqrtl
math.isqrt в Python
Корректное использование pow для подсчета a^b: round(powl(a, b))
1e18 + 1 == 1e18; 1e18L + 1 != 1e18
1\n * n != 1, т.к. хранится ограниченное число знаков у бесконечной периодической дроби
0.1 + ... + 0.1 != 1, т.к. числа хранятся в двоичной системе счисления
Недопустимость использования чисел с плавающей запятой хранения для хранения сумм с копейками
При возможности лучше не пользоваться числами с плавающей запятой. Примеры:
сравнение длин отрезков с концами в целых координатах
класс для рациональных дробей
Работа с eps:
сравнения
округления в фиксированную сторону
sqrt, asin, acos
Ограничения на eps сверху и снизу. Расстояние между двумя дробями с ограничением на величину знаменателя