/* error_accumulation.c 累積誤差 1/n + 1/n + ... = 1 だが ... */ #include int main() { int i, n = 100; float x, sum; while(n <= 10000000){ x = 1.0 / n; sum = 0.0; for(i = 1; i <= n; i++) sum += x; printf("n = %8d のとき 1/n + 1/n + ... = %7.5f\n", n, sum); n *= 10; } } /* n = 100 のとき 1/n + 1/n + ... = 1.00000 n = 1000 のとき 1/n + 1/n + ... = 0.99999 n = 10000 のとき 1/n + 1/n + ... = 1.00005 n = 100000 のとき 1/n + 1/n + ... = 1.00099 n = 1000000 のとき 1/n + 1/n + ... = 1.00904 n = 10000000 のとき 1/n + 1/n + ... = 1.06477 */