Maybe, it’s very simple question but I couldn’t get the answer. I’ve been searching quite a while ( now Google think that I’m sending automated queries http://twitter.com/michaelsync/status/17177278608 ) ..
int n = 4.35 *100;
cout << n;
Why does the output become “434” instead of “435”? 4.35 * 100 = 435 which is a integer value and this should be assignable to the integer variable “n”, right?
OR Does the C++ compiler cast 4.35 to integer before multiplying? I think it won’t. Why does the compiler automatically change 4.35 to 4.34 which is still a float??
Thanks.
What Every Computer Scientist Should Know About Floating-Point Arithmetic
That’s really just a starting point, sadly, as then languages introduce their own foibles as to when they do type conversions, etc. In this case you’ve merely created a situation where the constant 4.35 can’t be represented precisely, and thus 4.35*100 is more like 434.9999999999, and the cast to
intdoestrunc, notround.