DOUBLE 是一种双精度浮点数据类型,用于 CREATE TABLE 和 ALTER 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 转换为 FLOAT、TINYINT、SMALLINT、INT、BIGINT、STRING、TIMESTAMP 或 BOOLEAN。科学计数法:在
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 秒后的时间戳。使用说明与限制
聚合计算的差异性
由于
FLOAT 和 DOUBLE 采用高性能硬件指令进行算术运算,且分布式查询在处理海量数据时,各节点执行运算的顺序可能不同,导致对大批量数据进行 SUM() 或 AVG() 等聚合操作时,结果可能会有微小差异。若要求结果严格一致且可重复,请使用 DECIMAL 类型。精度缺失风险
浮点数无法精确表示某些小数值。在对精度要求极高的场景(尤其是从其他使用不同存储格式的数据库系统迁移数据时),
DECIMAL 通常是比 FLOAT 或 DOUBLE 更好的选择。