Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Jaka jest różnica między liczbą zmiennoprzecinkową a liczbową/dziesiętną w SQL Server — samouczek SQL Server / T-SQL, część 33

Liczba zmiennoprzecinkowa i rzeczywista są przybliżonymi typami danych. Typy danych Float i Real nie przechowują dokładnych wartości dla wielu liczb.Wartość może być bardzo zamknięta.

Numeryczne/Dziesiętne to typy danych o stałej precyzji. Będzie przechowywał wartości z dokładną precyzją i skalował to, co zdefiniowałeś.

Jeśli potrzebujesz przechowywać dane, gdzie niewielka różnica nie ma znaczenia, możesz użyć Float lub Real. Ale jeśli potrzebujesz dokładnych danych, takich jak aplikacja finansowa. Aby zapisać dokładne dane, należy używać danych typu Numeric/Decimal lub Money, ponieważ niewielka różnica może mieć wpływ na obliczenia.

Przykład:


Zadeklarujmy dwie zmienne i zapiszmy te same dane i zobaczmy, co się stanie na wyjściu ze względu na typ danych.
DECLARE @DecimalVariable DECIMAL(8, 2)

SET @DecimalVariable = 213429.95

DECLARE @FloatVariable FLOAT(24)

SET @FloatVariable = 213429.95

SELECT @DecimalVariable AS DecimalVariable
    ,@FloatVariable AS FloatVariable
 
 
 
 Różnica między liczbą zmiennoprzecinkową a dziesiętną/liczbową w SQL Server — samouczek T SQL 
 Jak widać na powyższym zrzucie, Decimal przechowywany i pokazywał dokładne wartości, a tam, gdzie zapisaliśmy wartości w postaci zmiennoprzecinkowej, zaokrąglał wartości. 

Ponieważ typy danych zmiennoprzecinkowych/rzeczywistych są przybliżonymi typami danych, unikaj ich używania w klauzuli Where specjalnie z operatorami =lub <>.
  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak znaleźć najwolniejsze zapytania

  2. Znalezienie rodzica najwyższego poziomu w SQL

  3. Plusy i minusy używania SqlCommand Prepare w C#?

  4. 5 świetnych zasobów, które pomogą Ci w pełnieniu roli monitorowania bazy danych

  5. freeTDS nie używa swojej konfiguracji