float
Eller om du vill gå old-school:
real
Du kan också använda float(53), men det betyder samma sak som float.
("real" motsvarar float(24), inte float/float(53).)
decimalen(x,y) SQL Server-typ är för när du vill ha exakt decimaltal snarare än flyttal (vilket kan vara approximationer). Detta är i motsats till C#-datatypen "decimal", som är mer som ett 128-bitars flyttal.
MSSQL:s flytande typ motsvarar 64-bitars dubbel skriv in .NET. (Mitt ursprungliga svar från 2011 sa att det kunde vara en liten skillnad i mantissa, men jag har testat detta 2020 och de verkar vara 100 % kompatibla i sin binära representation av både mycket små och mycket stora tal -- se https:/ /dotnetfiddle.net/wLX5Ox för mitt test).
För att göra saker mer förvirrande är en "float" i C# bara 32-bitars, så den skulle vara mer likvärdig i SQL med real/float(24)-typen i MSSQL än float/float(53).
I ditt specifika användningsfall... Allt du behöver är 5 platser efter decimaltecknet för att representera latitud och longitud med ungefär en meters precision, och du behöver bara upp till tre siffror före decimaltecknet för graderna. Float(24) eller decimal(8,5) passar bäst för dina behov i MSSQL, och att använda float i C# är tillräckligt bra, du behöver inte dubbelt. Faktum är att dina användare förmodligen kommer att tacka dig för att du avrundar till 5 decimaler istället för att ha en massa obetydliga siffror med på resan.