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位起,都產生了數據溢出。