ClickHouse 使用Float32和Float64代表单精度浮点数以及双精度浮点数
float32
大小:4字节 有效精度:7位 普遍概念:float
float64
大小:8字节 有效精度:16位 普遍概念:double
注意使用浮点数时,它是有限精度的!
假如分别对Float32和float64写入超过有效精度的数值,就会出现数据误差。
SELECT toFloat32('0.12345678901234567890')as a ,toTypeName(a)
查询结果为:0.12345679;
SELECT toFloat64('0.12345678901234567890')as a ,toTypeName(a)
查询结果为:0.12345678901234568;
可以发现Float32从小数点后第8位起,及Float64从小数点后第17位起,都产生了数据溢出。