DOUBLE

最近更新时间:2026-05-06 16:28:12

我的收藏
DOUBLE 是一种双精度浮点数据类型,用于 CREATE TABLEALTER TABLE 语句。

语法

CREATE TABLE 语句的列定义中:
column_name DOUBLE

数值特性

取值范围:
正数范围: [4.94065645841246544e-324, 1.79769313486231570e+308]
负数范围: [-1.79769313486231570e+308, -4.94065645841246544e-324]
精度:15 到 17 位有效数字,具体取决于使用情况。有效数字的位数与小数点的位置无关。
存储表示:占用 8 字节 存储空间,遵循 IEEE 754 双精度二进制浮点数 格式。

数据转换

隐式转换

TCHouse-X 不会自动将 DOUBLE 转换为任何其他类型。

显式转换

可使用 CAST()DOUBLE 转换为 FLOATTINYINTSMALLINTINTBIGINTSTRINGTIMESTAMPBOOLEAN
科学计数法:DOUBLE 字面量或从 STRING 转换时,可以使用指数表示法(例如 1.0e6 表示一百万)。
TIMESTAMP/TIMESTAMPTZ 转换规则:将整数值 N 转换为 TIMESTAMP/TIMESTAMPTZ时,系统会生成一个以 Unix 纪元(1970-01-01 00:00:00 UTC)为基准、增加 N 秒后的时间戳。在查询展示时,该值会自动转换为当前系统时区对应的本地时间。
TIMESTAMPNTZ 转换规则:将整数值 N 转换为 TIMESTAMPNTZ时,系统会生成一个以 Unix 纪元(1970-01-01 00:00:00 UTC)为基准、增加 N 秒后的时间戳。

使用说明与限制

聚合计算的差异性

由于 FLOATDOUBLE 采用高性能硬件指令进行算术运算,且分布式查询在处理海量数据时,各节点执行运算的顺序可能不同,导致对大批量数据进行 SUM()AVG() 等聚合操作时,结果可能会有微小差异。若要求结果严格一致且可重复,请使用 DECIMAL 类型。

精度缺失风险

浮点数无法精确表示某些小数值。在对精度要求极高的场景(尤其是从其他使用不同存储格式的数据库系统迁移数据时),DECIMAL 通常是比 FLOATDOUBLE 更好的选择。