Я всегда думал, что компьютеры лучше разбираются в математике и людях, пока я не попытался добавить 0,1 к 0,2 в Javascript (который является просто языком программирования) и получил ответ 0,3000000004.

Какого черта! Итак, я решил, что это ошибка, и попробовал то же самое в Python, но он также дал мне тот же неправильный ответ. Затем я обнаружил, что эти языки на самом деле не сломаны, они просто выполняют арифметику с плавающей запятой.

У компьютеров ограниченный объем памяти, и им необходимо искать компромисс между дальностью и точностью. В лучшем случае все числа должны храниться в пределах 64 бит. Это означает, что у нас могут быть целые числа с точностью до 15 цифр и максимум 17 чисел после десятичной точки. Это называется плавающей точкой, потому что нет фиксированного количества цифр до или после десятичной точки. Это позволяет отображать широкий и большой диапазон чисел.

Проблема в том, что компьютеры используют двоичную систему с основанием 2, в то время как люди используют систему с основанием 10, что приводит к ошибкам округления, когда вся память израсходована, и поэтому ваш компьютер плохо справляется с математикой.

Теперь, если вы действительно хотите углубиться в математическую часть этого, вот несколько ресурсов, которые вы можете проверить: