なぜdouble型が10の308乗まで扱えるか説明する

  • このエントリーをはてなブックマークに追加

スポンサーリンク

※サイト運営にサーバーは必須です※
~このサイトもエックスサーバーを使用しています~

目次

double型の基本情報

ビット数:64
最大値:1.79769313486232E+308
最小値:-1.79769313486232E+308
ゼロに近い最小の数:4.94065645841247E-324

考え方

※基本的な考え方は浮動小数点型であるfloat型と同じです。以下の説明は、かなり端折っています。

詳しく考え方を追いたい場合は→float型についてわかったことをまとめる

double型の64ビットは以下のように割り振られます。

1ビット:符号(+か-か)
11ビット:指数部(最大で、2の(1023乗)の数字)
52ビット:仮数部(1以上2未満の数字)

最大値について

指数部には11ビットあるので、0~2047までの2048通りの数字が扱えます。

※2048は2の11乗

0~2047の内、0(0と0に近い数字を扱う)と2047(無限大を扱う)は、用途が少し特殊です。

この二つを除いた2046通りで、2の(-1022乗)~2の(1023乗)まで扱えます。

そのため2の10乗が10の3乗とほぼ等しいことを利用して考えますと、

2の(10乗) ≒10の(3乗)
→2の(1023乗) ≒10の(306.9乗)

正確に計算すれば、10の(307乗)のオーダーになります。

これに仮数部が最大値に近い値(2に限りなく近い数字)を取るとき、最大値となります。

※最大値は10の308乗オーダー。

ゼロに近い最小の値について

一方で、ゼロに近い最小の値は指数部の数字が0~2047の内、0の場合です。

指数部の数字が0の場合に扱える数字の範囲は

「x.xxxxxx」×2の(-1023)乗です。

※「x.xxxxxx」には仮数部の数字が入ります。

最小の数となるのは「0.00…001」(2の(-51乗)に相当)の時です。

以上から2の(-1074)乗の時がゼロに近い最小の数を取ります。

有効数字について

最後に、有効数字は2進数で53桁分あります。

※52にプラス1されているのは、ケチ表現によって、1桁分得するからです。

2の53乗≒10の15.9乗

で、10進法で有効数字は15桁あることがわかります。

※以下のコードでは、double型の正しさをdouble型で確かめるというかなり怪しい行為をしています。(言語C#)

結果は、

double型の最大値は1.79769313486232E+308
double型の最小値は-1.79769313486232E+308
double型のゼロに近い最小の数は4.94065645841247E-324
2の1023乗は8.98846567431158E+307
仮数部が1番2に近くなるのは2
double型の最大値を計算すると1.79769313486232E+308
double型のゼロに近い最小の数を計算すると4.94065645841247E-324
2の53乗は9.00719925474099E+15

関連記事

~プログラミングを勉強してみませんか?~

TechAcademy [テックアカデミー] 無料の体験講座が用意されているので、気軽に体験できます。

※私(サイト主)も無料体験講座を実際に受けてみました(→感想)

     

コメントを残す

*

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)