浮動小数点数(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の違いは、値の格納方法にあります。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との比較はサポートされていません。
- デフォルト以外の切り捨てモードはサポートされていません。
- デフォルト以外の例外処理モードはサポートされていません。