Aetae, это тоже можно объяснить, исходя из понятия т.н. «
машинного эпсилон».
Размер мантиссы для вещественных чисел в Javascript составляет 52 бита. Поэтому наименьшее число, представляющее разницу между двумя возможными значениями мантиссы равно (в двоичной системе)
0.000000000000000000000000000000000000000000000000 0001,
или 2^(-52) = 2.22e-16. То есть как минимум в 17-м знаке после запятой (в десятичной системе счисления) будут наблюдаться погрешности округления. Видимо, для вашего примера, причина в этом.