浮動小数点数(FLOAT-Point Numbers)には小数点が含まれる場合と含まれない場合があります。この記事では、主に浮動小数点数の構文、パラメータ、および使用方法について説明します。
構文
OceanBaseデータベースでは、浮動小数点数に対して2種類の数値データ型を提供しています:
BINARY_FLOATは、32ビット単精度浮動小数点数データ型です。各BINARY_FLOAT値には4バイトが必要です。BINARY_DOUBLEは、64ビット倍精度浮動小数点数データ型です。各BINARY_DOUBLE値には8バイトが必要です。説明
NUMBER列では、浮動小数点数は10進精度を持ちます。BINARY_FLOATまたはBINARY_DOUBLE列では、浮動小数点数は2進精度を持ちます。
値の範囲
次の表に示す値の範囲に基づいて、浮動小数点数を指定できます。
| 値 | BINARY_FLOAT | BINARY_DOUBLE |
|---|---|---|
| 最大正の有界値 | 3.40282E+38F | 1.79769313486231E+308 |
| 最小正の有界値 | 1.17549E-38F | 2.22507485850720E-308 |
使用方法
浮動小数点数は、数値の後に指数を付けて範囲を拡大できます。例えば、1.666 e-20のように記述します。小数点以下の桁数は浮動小数点数には適用されません。これは、小数点以下に無限に多くの桁を含めることができるためです。
注意
2進浮動小数点数とNUMBERの違いは、値がOceanBaseデータベース内部で格納されることにあります。NUMBERデータ型は10進精度で格納され、保存されるデータはすべて正確に保存されます。2進浮動小数点数(FLOAT-Point Numbers)は、2進精度(数字0と1)で格納されます。この格納方式では、10進精度で表現可能なすべての値を正確に表現することはできません。
IEEE754準拠性
IEEE標準754-1985(IEEE754)
OceanBaseデータベースの浮動小数点データ型の実装は、基本的に電気・電子技術者協会(IEEE)の2進浮動小数点アルゴリズム標準に準拠しています。
浮動小数点データ型は、以下の点でIEEE754に準拠しています:
- SQL関数SQRTは平方根を実装しています。
- SQL関数REMAINDERは剰余を実装しています。
- 算術演算子は一致しています。
- 比較演算子は要件を満たしています。
- 変換演算子は一致しています。
- デフォルトの丸めモードをサポートしています。
- デフォルトの例外処理モードをサポートしています。
- OceanBaseデータベースは、現在INF、-INF、NaN、BINARY_FLOAT_NAN、BINARY_DOUBLE_NANなどの特殊定数をサポートしていません。
- SQL関数ROUND、TRUNC、CEIL、FLOORは、2進浮動小数点数BINARY_FLOAT、BINARY_DOUBLEを整数値BINARY_FLOAT、BINARY_DOUBLEに丸める機能を提供します。
- SQL関数TO_CHAR、TO_NUMBER、TO_NCHAR、TO_BINARY_FLOAT、TO_BINARY_DOUBLE、CASTは、2進浮動小数点数BINARY_FLOAT、BINARY_DOUBLEを10進数に丸め、また10進数をBINARY_FLOAT、BINARY_DOUBLEに丸める機能を提供します。
浮動小数点データ型は、以下の点でIEEE754に準拠していません:
- -0は+0に強制的に変換されます。
- NaNとの比較はサポートされていません。
- デフォルト以外の丸めモードはサポートされていません。
- デフォルト以外の例外処理モードはサポートされていません。