float
Of als je ouderwets wilt gaan:
real
Je kunt ook float(53) gebruiken, maar dat betekent hetzelfde als float.
("echt" is gelijk aan float(24), niet float/float(53).)
De decimaal(x,y) SQL Server-type is voor wanneer u exact wilt decimale getallen in plaats van drijvende komma (wat benaderingen kunnen zijn). Dit is in tegenstelling tot het "decimale" gegevenstype C#, dat meer lijkt op een 128-bits drijvende-kommagetal.
MSSQL's zwevend type is gelijk aan de 64-bits double typ .NET in. (Mijn oorspronkelijke antwoord uit 2011 zei dat er een klein verschil in mantisse zou kunnen zijn, maar ik heb dit in 2020 getest en ze lijken 100% compatibel te zijn in hun binaire weergave van zowel zeer kleine als zeer grote getallen -- zie https:/ /dotnetfiddle.net/wLX5Ox voor mijn test).
Om het nog verwarrender te maken:een "float" in C# is slechts 32-bits, dus het zou in SQL meer equivalent zijn aan het real/float(24)-type in MSSQL dan float/float(53).
In uw specifieke gebruiksgeval... Het enige wat je nodig hebt zijn 5 plaatsen achter de komma om de lengte- en breedtegraad weer te geven met een nauwkeurigheid van ongeveer één meter, en je hebt maximaal drie cijfers voor de komma nodig voor de graden. Float(24) of decimal(8,5) passen het beste bij uw behoeften in MSSQL, en het gebruik van float in C# is goed genoeg, u heeft geen double nodig. In feite zullen uw gebruikers u waarschijnlijk bedanken voor het afronden op 5 decimalen, in plaats van een hoop onbeduidende cijfers mee te nemen voor de rit.