MySQL 8.0 リファレンスマニュアル


MySQL 8.0 リファレンスマニュアル  /  ...  /  浮動小数点型 (概数値) - FLOAT、DOUBLE

11.1.4 浮動小数点型 (概数値) - FLOAT、DOUBLE

FLOAT および DOUBLE 型は概数値データ値を表します。 MySQL は、単精度値には 4 バイトを、倍精度値には 8 バイトを使用します。

FLOAT の場合、SQL 標準では、カッコで囲まれたキーワード FLOAT の後のビット単位の精度 (指数の範囲ではない) をオプションで指定できます。つまり、FLOAT(p) です。 MySQL では、このオプションの精度指定もサポートされていますが、FLOAT(p) の精度値は記憶域サイズの決定にのみ使用されます。 0 から 23 の精度は、4 バイト単精度の FLOAT カラムになります。 24 から 53 の精度は、8 バイト倍精度の DOUBLE カラムになります。

MySQL は、FLOAT(M,D) または REAL(M,D) または DOUBLE PRECISION(M,D) の非標準の構文を許可します。 ここで、(MD) は、値は合計で M 桁まで格納でき、そのうちの D 桁は小数点以下です。 たとえば、FLOAT(7,4) として定義されたカラムは、-999.9999 として表示されます。 MySQL は、値を格納するときに丸めを行うので、FLOAT(7,4) カラムに 999.00009 を挿入すると、近似の結果は 999.0001 になります。

MySQL 8.0.17 では、非標準の FLOAT(M,D) および DOUBLE(M,D) 構文は非推奨であり、将来のバージョンの MySQL ではサポートされなくなる予定です。

浮動小数点値は概数値であり、真数値としては格納されないので、比較で値を真数値として扱おうとすると、問題が発生することがあります。 これらはまた、プラットフォームまたは実装の依存関係にも従います。 詳細は、セクションB.3.4.8「浮動小数点値に関する問題」を参照してください。

移植性を最大にするために、概数値データ値のストレージを必要とするコードでは、精度または桁数が指定されていない FLOAT または DOUBLE PRECISION を使用する必要があります。


関連キーワード:  FLOAT, クラス, 数値, 空間, 小数点, カラム, 精度, 構文, 浮動, 概数