文档并没有真正解释 Float32
以及 Float64
以及他们为什么气馁。
我之所以问这个问题,是因为我看到在控制台cli请求或rest请求中使用these时出现了奇怪的行为。无论精度如何,发送到clickhouse的浮点值都会在最后一位略微修改。
例子: 1258.021545
成为 1258.0215453
.
每次插入这些值时,最后一个数字都会更改。我不认为问题来自于太高的精度值,因为这些值来自java double。
文档并没有真正解释 Float32
以及 Float64
以及他们为什么气馁。
我之所以问这个问题,是因为我看到在控制台cli请求或rest请求中使用these时出现了奇怪的行为。无论精度如何,发送到clickhouse的浮点值都会在最后一位略微修改。
例子: 1258.021545
成为 1258.0215453
.
每次插入这些值时,最后一个数字都会更改。我不认为问题来自于太高的精度值,因为这些值来自java double。
1条答案
按热度按时间0vvn1miw1#
clickhouse文档之所以要讨论
Float
是舍入误差。它与clickhouse本身无关,而是一个实数表示的算法。如果你不介意时不时地犯些错误,那就用浮点数吧。但是,如果你要存储代表货币的数字,浮动是一个禁区,在这种情况下,将小数点左右的部分作为整数存储在两个不同的字段中