Сложение двух чисел с плавающей запятой без потери точности
Артём Караваев на хабре написал статью о том, как складывать числа с плавающей запятой без потери точности.
Зачем это нужно. Представьте, что у вас есть большой массив чисел с плавающей запятой, и вам надо найти их сумму. Чем больше будет массив тем больше будет ошибка в вычислении из-за накопления погрешности.
Математически можно доказать, что ошибку округления сложения чисел с плавающей запятой всегда можно точно представить другим числом с плавающей запятой. То есть чтобы сложить два числа с плавающей запятой без потери точности, нужно вычислить погрешность и использовать её в других вычислениях. Найти эти числа можно так (в статье есть более точные алгоритмы поиска для разных входных значений):
s = a+b; // сумма
z = s-a;
t = b-z; // погрешность
Очень хорошая статья. Рекомендую почитать всем, кто заинтересовался этой темой.