użyj float lub prawdziwe typy danych tylko jeśli precyzja zapewniana przez dziesiętne (do 38 cyfr) jest niewystarczająca
-
Przybliżone typy danych liczbowych (patrz tabela 3.3) nie przechowują dokładnych wartości określonych dla wielu liczby; przechowują bardzo blisko przybliżenie wartości.(Technet)
-
Unikaj używania kolumn zmiennoprzecinkowych lub rzeczywistych w warunkach wyszukiwania klauzuli WHERE, zwłaszcza operatorów =i <>. Najlepiej jest ograniczyć kolumny zmiennoprzecinkowe i rzeczywiste do porównań> lub <. (Technet)
więc generalnie wybór dziesiętny jako typ danych jest najlepszym wyborem, jeśli
- Twój numer może się w nim zmieścić. Dokładność dziesiętna to 10E38 [~ 38 cyfr]
- mniejsza przestrzeń do przechowywania (i być może szybkość obliczeń) Float nie jest dla Ciebie ważna
- dokładne zachowanie liczbowe jest wymagane, na przykład w aplikacjach finansowych, w operacjach obejmujących zaokrąglanie lub w sprawdzaniu równości. (Technet)
- Dokładne Numeryczne typy danych dziesiętne i numeryczne — MSDN
- liczba =dziesiętna (5 do 17 bajtów)
- zmapuje na dziesiętny w .NET
- oba mają (18, 0) jako domyślne parametry (precyzja, skala) na serwerze SQL
- skala =maksymalna liczba cyfr dziesiętnych, które mogą być przechowywane po prawej stronie przecinka dziesiętnego.
- money (8 bajtów) i smallmoney (4 bajty) są również dokładnym typem danych i będą mapowane na dziesiętny w .NET i mają 4 miejsca dziesiętne (MSDN)
- W przybliżeniu Numeryczny typ danych zmiennoprzecinkowy i rzeczywisty — MSDN
- rzeczywista (4 bajty)
- zmapuje się na Single w .NET
- Synonimem ISO dla wartości real jest float(24)
- liczba zmiennoprzecinkowa (8 bajtów)
- zostanie odwzorowane na Double w .NET
- Wszystkie dokładne typy liczbowe zawsze dają ten sam wynik, niezależnie od rodzaju używanej architektury procesora lub wielkości liczb
- Parametr dostarczony do typu danych float określa liczbę bitów używanych do przechowywania mantysy liczby zmiennoprzecinkowej .
- Przybliżony numeryczny typ danych zwykle zużywa mniej pamięci i ma lepszą prędkość (do 20x), a także należy wziąć pod uwagę, kiedy zostały przekonwertowane w .NET
- Jaka jest różnica między liczbą dziesiętną, liczbą zmiennoprzecinkową i podwójną w C#
- Prędkość dziesiętna a podwójna
- SQL Server — mapowania typów danych .NET (z MSDN)
główne źródło :MCTS Self-Paced Training Kit (egzamin 70-433):Tworzenie baz danych Microsoft® SQL Server® 2008 — Rozdział 3 — Tabele, typy danych i deklaratywna integralność danych Lekcja 1 — Wybieranie typów danych (wytyczne) — Strona 93