/* * "Floating point is strange", part 2. */ #include int main(void) { float small = .0000000001; float large = 1.0; int count = 1000; /* left to right */ float sum1 = large; for (int i = 0; i < count; ++i) { sum1 += small; } /* right to left */ float sum2 = 0; for (int i = 0; i < count; ++i) { sum2 += small; } sum2 += large; printf("sum1 %f sum2 %f equal? %c\n", sum1, sum2, (sum1 == sum2) ? 'y' : 'n'); /* uncomment to show why output is not what you might think printf("sum1 %.10f sum2 %.10f equal? %c\n", sum1, sum2, (sum1 == sum2) ? 'y' : 'n'); */ return 0; }