0.1 в двоичном представлении имеет следующий вид:
0.10000000000000000555111512312578
double value = 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1;
std::cout << std::setprecision(32);
std::cout << value << "\n\n";
Почему результат 0.99999999999999988897769753748435?
Ведь число явно должно быть больше 1, а не меньше.