Float32とFloat64の違い|精度・範囲・使い分けを比較

この記事の要点

値をすぐに変換・確認したい方へ

IEEE 754変換ツールで符号・指数・仮数を分解できます。

IEEE 754変換ツールを使う

Float32とFloat64の基本比較

項目Float32Float64
別名単精度倍精度
合計ビット数32 bit64 bit
符号・指数・仮数1・8・23 bit1・11・52 bit
bias1271023
10進有効桁約7桁約15〜16桁
保存容量4 bytes8 bytes
最大有限値の目安約3.4×10³⁸約1.8×10³⁰⁸

ビット構造の違い

符号1
指数8
仮数23
符号1
指数11
仮数52

Float64は指数部が広いため表現範囲が大きく、仮数部も広いため細かな差を保持できます。

精度の違いが結果へ与える影響

Float32は約7桁を超える10進数字を保持すると、末尾が丸められる可能性があります。Float64でも無限の精度があるわけではありませんが、一般的な計算ではFloat32より誤差を抑えられます。

金額や識別番号には注意

小数を必ず10進法どおり正確に扱う必要がある場合や、桁を失ってはいけない整数IDには、浮動小数点数以外の型を検討してください。

主な言語・環境での扱い

環境Float32相当Float64相当
C / C++floatdouble
Javafloatdouble
JavaScriptFloat32ArrayなどNumber
Python(一般的な実装)array・NumPy等で指定float

Float32を選ぶ場面

Float64を選ぶ場面

相互変換するときの注意

Float64からFloat32へ変換すると、表現できない桁が丸められ、範囲を超えた値はInfinityになる可能性があります。Float32からFloat64へ広げても、すでに失われた情報は戻りません。

よくある質問

Float32は小数点以下何桁まで正確ですか?

小数点以下の固定桁数ではなく、全体で約7桁の10進有効桁が目安です。値の大きさによって小数部分に使える桁数は変わります。

Float64はFloat32のちょうど2倍正確ですか?

いいえ。保存容量は2倍ですが、仮数部は23ビットから52ビットへ増えるため、10進有効桁は約7桁から約15〜16桁へ増えます。

JavaScriptのNumberはFloat32ですか?

通常のNumberはIEEE 754のFloat64相当です。Float32相当へ丸めたい場合はFloat32ArrayやMath.froundなどを使用します。

Float32からFloat64へ変換すると精度は戻りますか?

戻りません。Float32へ保存した時点で丸められた情報は、Float64へ変換しても復元できません。