float
Lub jeśli chcesz przejść do starej szkoły:
real
Możesz także użyć float(53), ale oznacza to to samo, co float.
(„real” jest odpowiednikiem float(24), a nie float/float(53).)
dziesiętny(x,y) Typ SQL Server jest odpowiedni, gdy chcesz dokładny liczb dziesiętnych zamiast zmiennoprzecinkowych (które mogą być przybliżeniami). Jest to przeciwieństwo „dziesiętnego” typu danych C#, który jest bardziej podobny do 128-bitowej liczby zmiennoprzecinkowej.
float MSSQL typ jest odpowiednikiem 64-bitowego podwójnego wpisz w .NET. (Moja pierwotna odpowiedź z 2011 r. mówiła, że może być niewielka różnica w mantysie, ale przetestowałem to w 2020 r. i wydaje się, że są one w 100% kompatybilne w swojej binarnej reprezentacji zarówno bardzo małych, jak i bardzo dużych liczb – patrz https:// /dotnetfiddle.net/wLX5Ox dla mojego testu).
Aby było jeszcze bardziej zagmatwać, „float” w C# jest tylko 32-bitowy, więc w SQL byłby bardziej równoważny z typem real/float(24) w MSSQL niż float/float(53).
W konkretnym przypadku użycia... Wszystko, czego potrzebujesz, to 5 miejsc po przecinku, aby przedstawić szerokość i długość geograficzną z dokładnością do około jednego metra, a potrzebujesz tylko do trzech cyfr przed przecinkiem dla stopni. Float(24) lub dziesiętny(8,5) najlepiej pasują do Twoich potrzeb w MSSQL, a użycie float w C# jest wystarczająco dobre, nie potrzebujesz double. W rzeczywistości Twoi użytkownicy prawdopodobnie podziękują Ci za zaokrąglenie do 5 miejsc po przecinku, zamiast za garść nieznaczących cyfr, które pojawią się podczas jazdy.