Из-за "приблизительной" природы с плавающей точкой возможно, что два разных набора значений возвращают одно и то же значение.
#include <iostream>
int main() {
std::cout.precision(100);
double a = 0.5;
double b = 0.5;
double c = 0.49999999999999994;
std::cout << a + b << std::endl; // output "exact" 1.0
std::cout << a + c << std::endl; // output "exact" 1.0
}
Но возможно ли это и с помощью вычитания? Я имею в виду: есть два набора различных значений (сохраняя одно значение из них), которые возвращают 0.0
?
то есть a - b = 0.0
и a - c = 0.0
, учитывая некоторые наборы a,b
и a,c
с b != c
??