浮動小数点型は固定長であり、正確ではない数値型です。値の範囲と精度は、型の長さ、Precision、Scale、および符号なしであるかどうかによって決まります。
PrecisionとScaleはそれぞれ、小数点以下の最大有効桁数、小数部の最大有効桁数を表します。整数部の最大有効桁数は、PrecisionからScaleを引いた値となります。Precisionの最大値は255(Scaleは0のみ)であり、Scaleの最大値は30です。
説明
浮動小数点型の精度は、IEEE標準で規定されている理論値にすぎず、実際の状況ではハードウェアやOSの制限により若干異なる場合があります。
以下の表は、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をサポートしていません。