FLOATデータ型は、NUMBERのサブタイプです。精度を指定することも、指定しないこともできます。精度はNUMBERの定義と同じです。本記事では、FLOATデータ型の構文、パラメータ、および使用方法について説明します。
構文
FLOAT [(p)]
パラメータ
| パラメータ | 定義 | 値の範囲 | 説明 |
|---|---|---|---|
| p | 精度 | [1,126] | 数値の精度を定義します。これは、2進有効桁数に基づいて計算され、10進精度に変換する場合は0.30103を乗じる必要があります。 |
説明
- 2進精度を10進精度に変換する換算関係:
10進精度 = int(2進精度 × 0.30103)。 - 10進精度を2進精度に変換する換算関係:
2進精度 = int(10進精度 × 3.32193)。
使用方法
FLOATデータ型は、精度(Precision)を持つNUMBERデータ型のサブタイプであり、4~40バイトのストレージ容量を必要とします。その精度は2進有効桁数に基づいて計算され、範囲は[1,126]で、小数点以下の桁数はカスタマイズできません。FLOAT型は可変長で不正確な数値型です。
例
FLOATを使用して2進精度を2に設定し、10進精度に変換するとint(2 × 0.30103) = 0.6となります。結果は切り捨てられるため、FLOAT(2)の10進精度は0となります。FLOAT(2)テーブル
testを作成し、データを挿入します。ここで、col1列はNUMBER型、col2列はFLOAT型です。NUMBER(5,2)は、10進精度の固定小数点数を表し、有効桁数は5で、結果は小数点以下2桁を保持します。FLOAT(5)の2進精度は5で、10進精度に変換するとint(5 × 0.30103) = 1.50515となり、切り捨てると10進精度は1となります。例えば、123.45は科学的記数法で1.2345 × 10^2と表されます。1.2345の小数点以下1桁を保持し、四捨五入して1.2となり、最終的に1.2 × 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浮動小数点数を使用することを推奨します。