本日は 「割り算の答え」 が, 浮動小数点数で返る理由を書いてみます (o'(ェ)')_🐍
【 CPU の中身について】
CPU という 「計算処理を行う部分」 において, その中身は, おおまかに ALU (整数を処理) と FPU (小数を処理) に, わかれています 🖥
【 ALU の特徴について】
ALU は 「小数の計算」 が, できません。
Python においては // (ダブル・スラッシュ) を使用しますと ALU により 「割り算」 が, 行われますが 「整数」 しか返せないので 「商と余り」 という 「かたち」 で計算し 「商」 のみが 「答え」 として, 返る仕組みに成っています。また 「余り」 を計算したいときは % (パーセント記号) を, 別途使用して計算します。このように 「単純な割り算」 に使用されます。
#ALU:商の求め方
quotient = 10 // 3
print(quotient) # 計算結果 3
#ALU:余りの求め方
remainder = 10 % 3
print(remainder) # 計算結果 1
【 FPU の特徴について】
FPU は 「整数の計算」 が, できません。
Python においては / (スラッシュ) を使用しますと FPU (または, 除算専用の装置) により 「割り算」 が, 行われますが 「小数」 しか返せないので 「小数」 で 「答え」 が, 返る仕組みに成っています。また FPU は 「複雑な割り算」 に使用されます。更なる高度な割り算の場合は, 別途, 除算専用の装置(除算器)が処理しています。
#FPU:商の求め方
result = 10 / 3
print(result) # 計算結果 3.333...
【整数と小数(浮動小数点数)の計算について】
「整数と小数の計算」 においては 「整数が小数に変換」 されてから FPU で, 計算されます。ですので, その 「答え」 も 「小数」 で, 返ります。
#整数と小数の計算
result = 1 + 1.0
print(result) # 計算結果 2.0
【補足】
以前は amazon のコメントにおいて 「お返事」 が, できたのですが, その 「お返事機能」 が, なくなってしまったため, よくある 「疑問/質問」 などについても Qiita 様々において, 書いていこうと思っております ✨
また, この内容については, ぼくが書いている本で恐縮ですが, 4歩めのテキストの 「コラム - ALU と FPU について」 にて 「図入りでもう少し詳しく解説」 しております。もし, ご興味ありましたら, 何卒, よろしくお願いいたします (o'(ェ)')_🍵✨
* はじめてのプログラミング Python 入門者になるための4歩