浮動小数点型は固定長の非厳密な数値型であり、値の範囲と精度は型の長さ、Precision、Scale、および符号が無符号かどうかによって決まります。
PrecisionとScaleは、それぞれ10進法での有効桁数の最大総数、小数部の有効桁数の最大数を表します。整数部の有効桁数の最大数はPrecisionからScaleを引いた値に等しく、Precisionの最大値は255(その場合Scaleは0のみ可能)、Scaleの最大値は30です。
説明
浮動小数点型の精度はIEEE標準で規定されている理論値にすぎず、実際の動作はハードウェアやオペレーティングシステムの制限により若干異なる場合があります。
以下の表は、PrecisionとScaleを指定しない場合の浮動小数点型に必要なストレージ長と値の範囲を示しています。
データ型 |
長さ(バイト) |
値の範囲 |
精度 |
|---|---|---|---|
FLOAT |
4 | [-3.402823466E+38, -1.175494351E-38]、0 および [1.175494351E-38,3.402823466E+38] | 7 桁 |
DOUBLE |
8 | [-1.7976931348623157E+308, -2.2250738585072014E-308]、0 および [2.2250738585072014E-308,1.7976931348623157E+308] | 15 桁 |
PrecisionとScaleを指定した場合、値の範囲の決定方法は固定小数点型と同じです。
FLOAT
FLOATは、小さな(単精度)浮動小数点数を表すために使用されます。構文は以下のとおりです:
FLOAT[(M,D)] [UNSIGNED] [ZEROFILL]
Mは格納可能な総ビット数、Dは小数点以下の桁数です。MとDを省略した場合、値はハードウェアが許可する範囲内に格納されます。単精度浮動小数点数は約7桁の小数まで正確です。
数値列にZEROFILLを指定すると、OceanBaseデータベースはその列にUNSIGNED属性を自動的に追加します。UNSIGNEDを指定すると、負の値を格納することはできません。
説明
FLOAT(M,D)は古い構文であり、使用は推奨されません。
FLOATは以下の構文もサポートしています:
FLOAT(p) [UNSIGNED] [ZEROFILL]
pはビット単位の精度を表しますが、この値は結果のデータ型がFLOATかDOUBLEかを決定するためにのみ使用されます。pが0から24の場合、データ型はFLOATになり、MまたはDの値はありません。pが25から53の場合、データ型はDOUBLEになり、MまたはDの値はありません。結果列の範囲は、このセクションの前半で説明した単精度FLOATまたは倍精度DOUBLEデータ型と同じです。
DOUBLE
DOUBLEは、通常サイズ(倍精度)の浮動小数点数を表すために使用されます。構文は以下のとおりです:
DOUBLE[(M,D)] [UNSIGNED] [ZEROFILL]
Mは格納可能な総ビット数、Dは小数点以下の桁数です。MとDを省略した場合、値はハードウェアが許可する範囲内に格納されます。倍精度浮動小数点数は約15桁の小数まで正確です。
数値列にZEROFILLを指定すると、OceanBaseデータベースはその列にUNSIGNED属性を自動的に追加します。UNSIGNEDを指定すると、負の値を格納することはできません。
説明
DOUBLE[(M,D)]はMySQLの古い構文であり、使用は推奨されません。正確な検索が必要な場合は、DECIMAL型の使用を推奨します。
DOUBLE PRECISION
DOUBLE PRECISIONはDOUBLEの同義語です。構文は以下のとおりです:
DOUBLE PRECISION[(M,D)] [UNSIGNED] [ZEROFILL], REAL[(M,D)] [UNSIGNED] [ZEROFILL]
説明
バイナリ浮動小数点数では、現在特別値infinityとNaNはサポートされていません。