Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Qual é a diferença entre Float e Numérico/Decimal no SQL Server - SQL Server / T-SQL Tutorial Parte 33

Flutuante e Real são tipos de dados aproximados. Os tipos de dados Float e Real não armazenam valores exatos para muitos números. O valor pode ser extremamente fechado.

Numeric/Decimal são tipos de dados de precisão fixa. Ele armazenará os valores com precisão exata e dimensionará o que você definiu.

Se você precisar armazenar dados onde pequenas diferenças não importam, você pode usar Float ou Real. Mas se você precisa ter dados exatos como para aplicação financeira. Você deve usar o tipo de dados Numérico/Decimal ou Dinheiro para salvar dados exatos, pois pequenas diferenças podem afetar os cálculos.

Exemplo:


Vamos declarar duas variáveis ​​e salvar os mesmos dados e ver o que acontece com a saída devido ao tipo de dados delas.
DECLARE @DecimalVariable DECIMAL(8, 2)

SET @DecimalVariable = 213429.95

DECLARE @FloatVariable FLOAT(24)

SET @FloatVariable = 213429.95

SELECT @DecimalVariable AS DecimalVariable
    ,@FloatVariable AS FloatVariable
 
 
 
 Diferença entre Float e Decimal/Numeric no SQL Server - T SQL Tutorial 
 Como podemos ver no instantâneo acima, Decimal armazenou e mostrou valores exatos e onde salvamos valores em float, ele arredondava os valores. 

Como os tipos de dados float/real são tipos de dados aproximados, evite usá-los usando a cláusula Where especialmente com os operadores =ou <>.