単精度(32 ビット)の倍にあたる64 ビット浮動小数点規格。符号 1 + 指数 11 + 仮数 52 でビット数が大幅に増え、桁数も精度も飛躍的に上がります。
IEEE 754 倍精度とは、浮動小数点数を 64ビット(8バイト)で表現する規格です。単精度(32ビット)の倍のビット数を使うことから「倍精度」と呼ばれます。
多くのプログラミング言語の double 型・float64 型はこのフォーマットです。実はJavaScript の number 型もすべて IEEE 754 倍精度です(整数も含めて)。
値の式は単精度と同じ形ですが、バイアスが変わります:
・値 = (-1)S × 1.M × 2E - 1023
・S: 符号部(1ビット)
・E: 指数部(11ビット、バイアス 1023)
・M: 仮数部(52ビット、暗黙の 1. は別途)
| 位置 | ビット数 | 役割 | バイアス |
|---|---|---|---|
| bit 63 | 1 bit | 符号部 S | — |
| bit 62-52 | 11 bit | 指数部 E(バイアス済み) | +1023 |
| bit 51-0 | 52 bit | 仮数部 M(1. を省略) | — |
バイアス値の計算式: 2(指数部ビット数 − 1) − 1 なので、11 ビットの場合は 2¹⁰ − 1 = 1023。単精度の 127 と公式は同じ、ビット数だけ違います。
| 項目 | 単精度 (float32) | 倍精度 (float64) |
|---|---|---|
| 総ビット数 | 32 | 64 |
| 符号 | 1 | 1 |
| 指数 | 8 | 11 |
| 仮数 | 23 | 52 |
| バイアス値 | 127 | 1023 |
| 正の最大値 | 約 3.4 × 10³⁸ | 約 1.8 × 10³⁰⁸ |
| 正の最小値(正規化) | 約 1.18 × 10⁻³⁸ | 約 2.23 × 10⁻³⁰⁸ |
| 10進精度 | 約 7 桁 | 約 15〜17 桁 |
使い分けのポイント:
・単精度: メモリ・転送量を抑えたい場面(グラフィック、機械学習の学習など)
・倍精度: 精度が必要な場面(科学計算、金額計算、汎用プログラミング)
・現代のCPUでは速度差はほぼないので、特に理由がなければ倍精度が標準
上のツールで「0.1」を選び、単精度のページと見比べてみてください。倍精度では仮数 52 ビットすべてを使った精密な近似値が見られます。それでも 0.1 は2進数で循環小数なので「完全」にはなりません──これが 0.1 + 0.2 ≠ 0.3 問題が倍精度でも残る理由です。