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