次のコード行の実行中:
int i,a;
for(i=0;i<=4;i++)
{
a=pow(10,i);
printf("%d\t",a);
}
出力を見て驚いたのは、 1
10
99
1000
9999
代わりに1
10
100
1000
10000
.
考えられる理由は何ですか?
注
上記の for ループの wheni = 2
で、変数に格納されている値a
がであることが浮動小数点の不正確さであると思われる場合99
。
しかし、代わりに書くと
a=pow(10,2);
これで a の値は になります100
。そんなことがあるものか?