ClickHouse 中的浮点类型在 C 语言中的等价类型如下:
Float32—float。Float64—double。
ClickHouse 中的浮点类型具有以下别名:
Float32—FLOAT、REAL、SINGLE。Float64—DOUBLE、DOUBLE PRECISION。
在创建表时,可以为浮点数指定数值参数(例如 FLOAT(12)、FLOAT(15, 22)、DOUBLE(12)、DOUBLE(4, 18)),但 ClickHouse 会忽略这些参数。
使用浮点数
- 浮点数运算可能会产生舍入误差。
- 计算结果取决于计算方式(包括计算机系统的处理器类型和架构)。
- 浮点运算可能产生诸如无穷大(
Inf)和“非数字值”(NaN)之类的结果。在处理计算结果时应考虑这一点。 - 当从文本解析浮点数时,结果可能并不是最接近的机器可表示数值。
NaN 和 Inf
与标准 SQL 相比,ClickHouse 支持以下几类浮点数:
Inf– 无穷大。
-Inf— 负无穷大。
NaN— 表示“不是数字”(Not a Number)。
请参阅 ORDER BY 子句 部分中关于 NaN 排序的规则。
BFloat16
BFloat16 是一种 16 位浮点数数据类型,包含 8 位指数、1 位符号位和 7 位尾数位。
它在机器学习和 AI 应用中非常实用。
ClickHouse 支持 Float32 与 BFloat16 之间的相互转换,
可以使用 toFloat32() 或 toBFloat16 函数来完成。
注意
大多数其他操作当前尚不支持。