FLOATデータ型はNUMBERのサブタイプです。精度を指定することも、指定しないこともでき、精度の定義はNUMBERと同じです。本記事では、FLOATデータ型の構文、パラメータ、使用方法について説明します。
構文
FLOAT [(p)]
パラメータ
パラメータ |
定義 |
値の範囲 |
説明 |
|---|---|---|---|
| p | 精度 | [1,126] | 数値の精度を定義します。二進数での有効桁数に基づいて計算され、10進数の精度に換算するには0.30103を乗算する必要があります。 |
説明
- 二進数精度から十進数精度への換算関係:
十進数精度 = int(二進数精度 x 0.30103)。 - 十進数精度から二進数精度への換算関係:
二進数精度 = int(十進数精度 x 3.32193)。
使用方法
FLOAT データ型は精度(Precision)を持つ NUMBER データ型のサブタイプであり、4~40バイトのストレージ容量を必要とします。その精度は二進数の有効桁数によって計算され、範囲は [1,126] です。小数点以下の桁数はカスタマイズできません。FLOAT 型は可変長で不正確な数値型です。
例
FLOATを使用して二進数精度を2に設定すると、十進数精度はint(2 x 0.30103) = 0.6となり、結果は切り捨てられるため、FLOAT(2)の十進数精度は0となります。FLOAT(2)テーブル
testを作成し、データを挿入します。col1列はNUMBER型、col2列はFLOAT型です。NUMBER(5,2)は十進数精度の固定小数点数で、有効桁数は5、結果は小数点以下2桁を保持します。FLOAT(5)の二進数精度は5で、十進数精度に換算するとint(5 x 0.30103) = 1.50515となり、切り捨てた後の十進数精度は1となります。例えば、123.45は科学記数法で1.2345 x 10^2と表され、1.2345の小数点以下1桁を保持し、四捨五入して1.2となり、最終的に1.2 x 10^2 = 120と表示されます。以下のステートメントを実行します:CREATE TABLE test (col1 NUMBER(5,2), col2 FLOAT(5)); INSERT INTO test VALUES (1.23, 1.23); INSERT INTO test VALUES (7.89, 7.89); INSERT INTO test VALUES (12.79, 12.79); INSERT INTO test VALUES (123.45, 123.45);SELECTステートメントを実行してテーブルtestを確認すると、実行結果は次のとおりです:obclient> SELECT * FROM test; +--------+------+ | COL1 | COL2 | +--------+------+ | 1.23 | 1.2 | | 7.89 | 7.9 | | 12.79 | 13 | | 123.45 | 120 | +--------+------+ 4 rows in set説明
ANSI FLOATデータを変換する場合、OceanBaseデータベースが内部で使用するFLOATデータ型を使用できます。ただし、BINARY_FLOATおよびBINARY_DOUBLE浮動小数点数の使用を推奨します。