アカウント
メニュー
次のPythonプログラムを実行したら、0.999999999999と表示されました。その理由の説明として正しいものを選んでください。
1s=0 2 3for i in range(10): 4 s=s+0.1 5print(s)
0.1を2進数で表現すると完全には表現できないため
range関数の仕様により、総和が1未満になる
print関数が自動的に小数点第12位まで表示するため
変数sがオーバーフローしているため
答えを見る
不正解
(あなたの解答:未回答)
この問題の核心は、0.1を二進法で表すと無限小数になるため、正確な表現が不可能となり、結果的に誤差が生じる点にあります。Python(そして多くの他のプログラミング言語も)は、内部で数値を二進法で扱っているため、このような現象が起こります。このため、0.1を10回足すと、理論上は1.0になるはずですが、微小な誤差が累積し0.999999999999となります。
問107 : Pythonプログラムの実行結果(コンピュータ)