next up previous
Next: 関数電卓 Up: 電卓として使ってみよう Previous: 電卓起動?

補足. 計算できる数の範囲

ふつーの電卓では, 表示できる数の桁数が決まっています. たとえば, 8 桁 まで表示できる電卓では, 結果が 9 桁になるような整数の計算は(ふつう)出来ません. これは, 表示だけの問題ではなくて, 計算機がひとつの数を記憶する能力(とい うか規格)とも関係しています. 最近のコンピュータでは, 232というのが基準になっているものが多いです. 整数の場合, ±があるので, 232 を プラス部分とマイナス部分に分けた半分の 231=2147483648 がひとつの目 安になります. (実際は, これより 1 小さい数までしか扱えません. 0 がありま すから.) この限界を越えた計算をしようとすると, エラー が出ます. これをオーバーフローといいます.

なんだか難しそうですが, 結論は簡単です, コンピュータでとても大きな数を 扱うときには注意が必要である, ということです.

しかし, 浮動小数点数の場合はもっと大きい絶対値をもつ小数を扱うことが 出来ます.

いま, 手元にあるコンピュータの Python では「普通に」扱える整数 の最大値は, 2147483647 ですが, この 2 倍の近似値を求めることは 出来ます:

>>> 2147483647e0*2
4294967294.0
ここで, 2147483647e0 $2147483647\times 10^0$ すなわち 2147483647.0 を意味します. (一般に AeB は $A\times 10^B$ を 意味します. 1.00e2 は $1.00\times 10^2$, すなわち 100.0 です.)

(ただし, 浮動小数点数でも扱える数値の範囲には限度はあります.)

なお, Python では整数の後に「L」をつけることにより, 大きい整数を 計算することが出来ます(多分, 計算機のパワーの許す限りの桁数を使える でしょう). 232 は普通の整数としてはオーバーフローしますが, 「L」をつけると計算できます:

>>> 2**32
Traceback (innermost last):
  File "<stdin>", line 1, in ?
OverflowError: integer pow()
>>> 2L**32
4294967296L
>>> _ ** 2
18446744073709551616L



Toru Sasaki
2000-08-30