clickhouse21.7.11.3 数据类型-Decimal(P, S), Decimal32(S), Decimal64(S), Decimal128(S), Decimal256(S)

Decimal

若需要要求更高的精度的数值运算,则需要使用定点数。Clickhouse提供了Decimal32,Decimal64,Decimal128、Decimal256 精度的定点数。

提示:金额使用该类型

语法

Decimal(P,S)
  • P:表示精度precision,决定总位数 (整数部分+小数位部分),取值范围为 [1:76]

  • S:代表规模 scale,决定 小数位,取值范围是 [ 0 : P ]。

简写

根据 P 参数值,Decimal(P, S) 简写成以下方式:

简写形式 全写形式 数据范围
Decimal32(S) Decimal(1-9,S) - ( -1 10^(9 - S), 1 10^(9 - S) )
Decimal64(S) Decimal(10-18,S) - ( -1 10^(18 - S), 1 10^(18 - S) )
Decimal128(S) Decimal(19-38,S) - ( -1 10^(38 - S), 1 10^(38 - S) )
Decimal256(S) Decimal(39-76,S) - ( -1 10^(76 - S), 1 10^(76 - S) )

注意: 由于现代计算机只支持32bit和64bit,Decimal128 在软件层面是由软件模拟实现,速度要比Decimal32和Decimal64慢。

例子

MySQL         Clickhouse
Decimal(9,2)  Decimal32(2)
Decimal(22,6) Decimal128(6)

Decimal32(4) 表示的数据类型等同于MySQL的decimal(9,4)
数据范围为 -99999.9999 to 99999.9999 最小精度为0.0001

原文出处:/show_1IX3NpTRVJCN.html