float
Lub jeśli chcesz iść do starej szkoły:
real
Możesz także użyć float (53), ale oznacza to to samo, co float.
(„real” jest równoważne z float (24), a nie float / float (53).)
Typ dziesiętny (x, y) SQL Server służy do tego, kiedy chcesz dokładnych liczb dziesiętnych zamiast liczb zmiennoprzecinkowych (które mogą być przybliżone). Jest to w przeciwieństwie do typu danych „dziesiętnych” w C #, który jest bardziej podobny do 128-bitowej liczby zmiennoprzecinkowej.
Typ zmiennoprzecinkowy MSSQL jest równoważny 64-bitowemu podwójnemu typowi w .NET. (Moja pierwotna odpowiedź z 2011 roku powiedziała, że może być niewielka różnica w mantysie, ale przetestowałem to w 2020 roku i wydają się być w 100% kompatybilne pod względem binarnej reprezentacji zarówno bardzo małych, jak i bardzo dużych liczb - patrz https: / /dotnetfiddle.net/wLX5Ox dla mojego testu).
Aby bardziej skomplikować sprawę, „liczba zmiennoprzecinkowa” w języku C # jest tylko 32-bitowa, więc byłaby bardziej równoważna w SQL z typem rzeczywistym / float (24) w MSSQL niż zmienna / zmiennoprzecinkowa (53).
W twoim konkretnym przypadku użycia ...
Wszystko czego potrzebujesz to 5 miejsc po przecinku, aby przedstawić szerokość i długość geograficzną z dokładnością około jednego metra, a potrzebujesz tylko trzech cyfr przed przecinkiem dla stopni. Liczba zmiennoprzecinkowa (24) lub dziesiętna (8,5) najlepiej pasuje do twoich potrzeb w MSSQL, a użycie zmiennoprzecinkowe w C # jest wystarczająco dobre, nie potrzebujesz podwójnej. W rzeczywistości Twoi użytkownicy prawdopodobnie będą ci wdzięczni za zaokrąglenie do 5 miejsc po przecinku, zamiast zebrać kilka nieistotnych cyfr podczas jazdy.