/* error_underflow.c アンダーフロー 1 ÷ (10^n) × (10^n) = 1 のはずだが ... */ #include int main() { int i, n; float x; for(n = 35; n <= 50; n++){ x = 1.0; for(i = 1; i <= n; i++) x /= 10; for(i = 1; i <= n; i++) x *= 10; printf("n = %d のとき %f\n", n, x); } return 0; } /* n = 35 のとき 1.000000 n = 36 のとき 1.000000 n = 37 のとき 1.000000 n = 38 のとき 1.000000 n = 39 のとき 1.000000 n = 40 のとき 0.999995 n = 41 のとき 0.999967 n = 42 のとき 1.000527 n = 43 のとき 0.994922 n = 44 のとき 0.980909 n = 45 のとき 1.401299 n = 46 のとき 0.000000 n = 47 のとき 0.000000 n = 48 のとき 0.000000 n = 49 のとき 0.000000 n = 50 のとき 0.000000 */