While doing my homework I noticed something really strange that I just can’t figure out why.
int x = 5;
cout << pow(x, 2);
The result is 25. That’s fine. But if I write the same program like this:
int x = 5;
int y = pow(x, 2);
cout << y;
The result is 24!
When x is 2, 3, 4, 6, 7, 8 no problem, but with 5, 10, 11, 13 etc. result is 1 lower than it should be.
Same thing with if().
for (int x = 1; x <= 20 ; x++) {
if (x * x == pow(x, 2))
cout << x << endl;
}
It prints out numbers 1, 2, 3, 4, 6, 8, 12, 16.
std::pow()returns a floating point number. If the result is for instance24.99999999and you cast it toint, it will be cut off to24.And that is what you do in the 2nd code example.
coutdoes not convert tointand outputs the correct result in the 1st code example.