I have a problem with summing two doubles
double a = 1e+020;
double b = -4000;
double res = a + b; //result = 1e+020
Why res is equal to a?
I have a problem with summing two doubles
double a = 1e+020;
double b = -4000;
double res = a + b; //result = 1e+020
Why res is equal to a?
double
has not infinite number of significant digits. You can query number of digits in base 10 with std::numeric_limits
:
#include <iostream>
#include <limits>
int main(){
std::cout << std::numeric_limits<double>::digits10;
}
Typical output is
15
but you are requesting 16 significant digits.