Hello,
Code:
#include <stdio.h>
main()
{
int xs[] = {2,4,5,80,80,80,160,320,640,640};
int i;
double sum = 0;
for(i = 0; i < 10; i++) {
sum += (1.0/xs[i]);
}
i = sum;
printf("sum = %f i = %d\n", sum, i); // i should be 1 ...
if(i == 1) printf("Everyone is happy 1.\n");
sum = 1.000000;
i = sum;
printf("sum = %f i = %d\n", sum, i); // now i = 1. why?
if(i == 1) printf("Everyone is happy 2.\n");
}
A workaround is: i = sum+0.00001;
But I was curious why it is happening. Anyone could explain, please?
Thanks in advance.
gcc version 4.6.1 (Ubuntu/Linaro 4.6.1-9ubuntu3)