OceanBase 浮点数字
浮点数字(FLOAT-Point Numbers)可以有小数点,从第一位到最后一位,或者根本没有小数点。您可以选择在数字后使用指数来增加范围,例如 1.666 e-20。小数位数不适用于浮点数,因为小数点后可以出现的位数不受限制。
注意
二进制浮点数与 NUMBER
的区别,在于值是由 OceanBase 数据库内部存储的。NUMBER
数据类型使用十进制精度存储,所存储的数据都会精确存储。二进制浮点数(FLOAT-Point Numbers)是使用二进制精度(数字 0 和 1)存储的,这种存储值的方式不能精确地表达使用十进制精度的所有值。
语法
OceanBase 数据库为浮点数提供了两种数字数据类型:
-
BINARY_FLOAT
,是一种 32 位单精度浮点数数据类型。每个 BINARY_FLOAT
值需要 4 个字节。
BINARY_DOUBLE
,是一种 64 位双精度浮点数数据类型。每个 BINARY_DOUBLE
值需要 8 个字节。说明
- 在 NUMBER 列中,浮点数具有十进制精度。
- 在 BINARY_FLOAT 或 BINARY_DOUBLE 列中,浮点数具有二进制精度。
- 二进制浮点数暂时不支持特殊值 infinity 和 NaN。
取值范围
您可以根据值域范围指定浮点数。
值 |
BINARY_FLOAT |
BINARY_DOUBLE |
---|---|---|
最大正有限值 |
3.40282E+38F |
1.79769313486231E+308 |
最小正有限值 |
1.17549E-38F |
2.22507485850720E-308 |
更多信息
IEEE754 符合性
- IEEE 标准 754-1985(IEEE754)
- 浮点数据类型在以下方面符合
IEEE754
- SQL 函数
SQRT
实现平方根。 - SQL 函数
REMAINDER
实现余数。 - 算术运算符一致。
- 比较运算符符合要求。
- 转换运算符符合。
- 支持默认的舍入模式。
- 支持默认的异常处理模式。
- OceanBase 数据库暂时不支持
INF
、-INF
、NaN
、BINARY_FLOAT_NAN
、BINARY_DOUBLE_NAN
之类的特殊常量。 - SQL 函数
ROUND
、TRUNC
、CEIL
和FLOOR
提供了将二进制浮点数 BINARY_FLOAT
、BINARY_DOUBLE
舍入为整数值 BINARY_ FLOAT
和 BINARY_DOUBLE
的功能。 - SQL 函数
TO_CHAR
、TO_NUMBER
、TO_ NCHAR
、TO_BINARY_FLOAT
、TO_BINARY_DOUBLE
和 CAST
提供了将二进制浮点数 BINARY_FLOAT
、BINARY_DOUBLE
舍入为十进制数和十进制数舍入为 BINARY_FLOAT
、 BINARY_DOUBLE
的功能。 - 浮点数据类型在以下方面不符合 IEEE754:
- -0 被强制为 +0。
- 不支持与
NaN
比较。 - 不支持非默认的舍入模式。
- 不支持非默认异常处理模式。
OceanBase 浮点数据类型的实现基本上符合电气和电子工程师协会(IEEE)的二进制浮点算法标准。