Se você precisa de cálculos precisos, especialmente se trabalha com dados financeiros ou de negócios que exigem alta precisão, considere usar Decimal.Números de ponto flutuante podem levar a resultados imprecisos, como ilustrado abaixo:
Float32—float.Float64—double.
Float32—FLOAT,REAL,SINGLE.Float64—DOUBLE,DOUBLE PRECISION.
FLOAT(12), FLOAT(15, 22), DOUBLE(12), DOUBLE(4, 18)), mas o ClickHouse os ignora.
Uso de números de ponto flutuante
- Cálculos com números de ponto flutuante podem produzir erro de arredondamento.
- O resultado do cálculo depende do método de cálculo (do tipo de processador e da arquitetura do sistema computacional).
- Cálculos de ponto flutuante podem resultar em números como infinito (
Inf) e “não é um número” (NaN). Isso deve ser levado em conta ao processar os resultados dos cálculos. - Ao interpretar números de ponto flutuante a partir de texto, o resultado pode não ser o número representável pela máquina mais próximo.
NaN e Inf
Inf– infinito.
-Inf— Infinito negativo.
NaN— Não é um número.
NaN na seção cláusula ORDER BY.
BFloat16
BFloat16 é um tipo de dado de ponto flutuante de 16 bits, com expoente de 8 bits, sinal e mantissa de 7 bits.
Ele é útil para aplicações de aprendizado de máquina e IA.
O ClickHouse oferece suporte a conversões entre Float32 e BFloat16, que
podem ser realizadas com as funções toFloat32() ou toBFloat16.
A maioria das outras operações não tem suporte.