CockroachDB支持各种不确定精度的浮点数数据类型,最多可达到17位小数精度。

它们在内部使用标准双精度(64位二进制编码)IEEE754格式处理。

名称和别名

Name Aliases
FLOAT None
REAL FLOAT4
DOUBLE PRECISION FLOAT8

语法

数值文本可以作为浮点类型的输入。例如:1.4141234

对于正无穷大、负无穷大和NaN(.-a-Number)的特殊IEEE754值不能直接使用数值输入,必须使用解释文字或从字符串文字的显式转换进行转换。

下列值可被识别:

Syntax Value
inf, infinity, +inf, +infinity +∞
-inf, -infinity -∞
nan NaN (Not-a-Number)

For example:

大小

FLOAT支持最多8字节的宽度值,但是由于CockroachDB元数据因素,总存储大小可能更大。

示例

> CREATE TABLE floats (a FLOAT PRIMARY KEY, b REAL, c DOUBLE PRECISION);
> SHOW COLUMNS FROM floats;
+-------+------------------+---------+---------+-------------+
| Field | Type             | Null    | Default |   Indices   |
+-------+------------------+---------+---------+-------------+
| a     | FLOAT            | false   | NULL    | {"primary"} |
| b     | REAL             | true    | NULL    | {}          |
| c     | DOUBLE PRECISION | true    | NULL    | {}          |
+-------+------------------+---------+---------+-------------+
(3 rows)
> INSERT INTO floats VALUES (1.012345678901, 2.01234567890123456789, CAST('+Inf' AS FLOAT));
> SELECT * FROM floats;
+----------------+--------------------+------+
|       a        |         b          |  c   |
+----------------+--------------------+------+
| 1.012345678901 | 2.0123456789012346 | +Inf |
+----------------+--------------------+------+
(1 row)
# Note that the value in "b" has been limited to 17 digits.

支持的转换

FLOAT可以转换为以下任何数据类型:

Type Details
INT 截断小数精度,要求值介于-2 ^ 63和2 ^ 63-1之间
DECIMAL 如果值为NaN或+/- Inf,则报错。
BOOL 0转换为false; 所有其他值转换为true
STRING --

See Also

Data Types