跳到主要内容
跳到主要内容

Float32 | Float64 | BFloat16 类型

备注

如果您需要准确的计算,特别是当您处理需要高精度的财务或商业数据时,您应该考虑使用 Decimal

浮点数 可能会导致不准确的结果,如下所示:

ClickHouse 和 C 中的等效类型如下:

  • Float32float
  • Float64double

ClickHouse 中的浮点类型具有以下别名:

  • Float32FLOATREALSINGLE
  • Float64DOUBLEDOUBLE PRECISION

创建表时,可以设置浮点数的数值参数(例如 FLOAT(12)FLOAT(15, 22)DOUBLE(12)DOUBLE(4, 18)),但 ClickHouse 会忽略这些参数。

使用浮点数

  • 使用浮点数进行计算可能会产生舍入误差。
  • 计算结果取决于计算方法(处理器类型和计算机系统的架构)。
  • 浮点计算可能会导致如无穷大(Inf)和“非数”(NaN)这样的数字出现。在处理计算结果时应考虑这一点。
  • 从文本解析浮点数时,结果可能不是最接近的机器可表示的数字。

NaN 和 Inf

与标准 SQL 不同,ClickHouse 支持以下类别的浮点数:

  • Inf – 无穷大。
  • -Inf — 负无穷大。
  • NaN — 非数。

有关 NaN 排序的规则,请参见 ORDER BY 子句 部分。

BFloat16

BFloat16 是一种 16 位浮点数据类型,具有 8 位指数、符号和 7 位尾数。 它对于机器学习和人工智能应用非常有用。

ClickHouse 支持在 Float32BFloat16 之间的转换,可以使用 toFloat32()toBFloat16 函数进行转换。

备注

大多数其他操作不被支持。