12/08/21 02:15:47.04
[1] プログラミング言語
[3] 環境
[3.1] OS: Windows7
[3.2] コンパイラ名とバージョン: Visual Studio2010 )
[3.3] 言語: C++
int main(void){
double d2, s2;
int i;
s2 = 0.0;
d2 = 1.0/10000000.0;
for(i = 0; i < 10000000; i++){
s2 = s2 + d2;
}
printf("%f\n",s2);
printf("%17.14f\n",s2);
return 0;
}
上記のプログラムを実行すると,コマンドプロンプトには
1.000000
0.999999999750170
と出力される.
どちらも同じs2を出力しているのにもかかわらず,
表示させる桁数を変えるだけで出力内容が変わる理由,
および,2行目の方で計算結果が
1.000000000000000
とならない理由を述べよ.