IT
มัธยมปลาย
เคลียร์แล้ว

どうしてこのプログラムから二進法で表しているとわかるのですか?
解答を読んでもよくわからなかったので詳しく説明してほしいです🙏

2関連 p.95 次のような Python のプログラムを作成し, 実行 したところ、 結果が 0.9999999999999999 の ように表示された。 その理由を答えよ。 s = 0 = 0 while i < 10: s = s + 0.1 i = i + 1 print(s)
(4) O 文● 2. (解答例) 0.1を2進法で表すと, 無限小数となり 途中で値が丸められているため。 DITEMOHT

คำตอบ

✨ คำตอบที่ดีที่สุด ✨

簡単に まとめてみました。

■なぜ、このプログラムから 2 進法で表していると分かるか?

実は、このプログラムを見て「2 進法で表している」と
判断したわけでは ありません。

そもそも、コンピュータはデータ(数・文字・画像とか)を
内部で 2 進法で表す仕組みになっています。

だから、どんなプログラムでも、どんなデータでも、
2 進法で表されます。

ただし、あくまで内部(メモリ上や CPU 上)の話なので、実際には
・プログラムを実行する直前では 10 進数 → 2 進数
 (今回の例だと、ソースコード上の数 0, 10, 0.1, 1 を 2 進数に)
・print で表示するときには 2 進数 → 10 進数
 (今回の例だと、変数 s が表す内容を 10 進数に)
の変換が自動的にされています。

この 10 進数 → 2 進数の変換のときに
誤差が発生することがあります。
(今回の例だと 0.1 を 2 進数にするときに誤差が発生している)

なので、解答例では「0.1 を 2 進法で表すと」とありますが、
どんなプログラムでも言える、大前提の話ということになります。

不明な点があったら、コメントください。
分かる範囲で答えますので。

白猫

とてもわかりやすい説明で理解できました!!
ありがとうございます!

แสดงความคิดเห็น
ข้อสงสัยของคุณเคลียร์แล้วหรือยัง?

เมื่อดูคำถามนี้แล้ว
ก็จะเจอคำถามเหล่านี้ด้วย😉