Вы говорите в комментарии, что вы должны вычислить x1 * x2 + y1 * y2, где все переменные являются числами с плавающей точкой.Поэтому, если вы выполняете вычисления с двойной точностью, вы вообще не теряете точности, потому что двойная точность имеет более чем в два раза больше битов точности, чем float (при условии, что ваша цель использует IEEE-754 ).
В частности: пусть xx, yy
будет действительным числом, представленным float
переменными x, y
.Пусть xxyy
будет их произведением, а xy
будет результатом умножения с двойной точностью x * y
.Тогда во всех случаях xxyy
- это действительное число, представленное xy
.