Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Qual è la differenza tra float e numerico/decimale in SQL Server - Tutorial SQL Server/T-SQL Parte 33

Fatta e reale sono tipi di dati approssimativi. I tipi di dati Float e Real non memorizzano valori esatti per molti numeri. Il valore può essere estremamente chiuso.

Numerico/Decimal sono tipi di dati a precisione fissa. Memorizzerà i valori con la precisione esatta e ridimensionerà ciò che hai definito.

Se hai bisogno di archiviare dati in cui una piccola differenza non ha importanza, puoi utilizzare Float o Real. Ma se hai bisogno di dati esatti come per l'applicazione finanziaria. Dovresti utilizzare il tipo di dati Numerico/Decimale o Denaro per salvare i dati esatti, poiché una piccola differenza può influire sui calcoli.

Esempio:


Dichiariamo due variabili e salviamo gli stessi dati e vediamo cosa succede all'output a causa del tipo di dati di esse.
DECLARE @DecimalVariable DECIMAL(8, 2)

SET @DecimalVariable = 213429.95

DECLARE @FloatVariable FLOAT(24)

SET @FloatVariable = 213429.95

SELECT @DecimalVariable AS DecimalVariable
    ,@FloatVariable AS FloatVariable
 
 
 
 Differenza tra float e decimale/numerico in SQL Server - T SQL Tutorial 
 Come possiamo vedere nell'istantanea sopra, Decimal ha memorizzato e mostrato valori esatti e dove abbiamo salvato i valori in float, ha arrotondato i valori. 

Poiché i tipi di dati float/real sono tipi di dati approssimativi, evita di usarli utilizzando la clausola Where specialmente con gli operatori =o <>.