Hello,
A workaround is: i = sum+0.00001;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"); }
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)



6Likes
LinkBack URL
About LinkBacks



