float
Или, если вы хотите пойти в старой школе:
real
Вы также можете использовать float (53), но это означает то же самое, что и float.
(«реальный» эквивалентен float (24), а не float / float (53).)
Десятичное (х, у) типа SQL Server для , если вы хотите точные десятичных чисел , а не с плавающей точкой (которые могут быть приблизительными). Это отличается от «десятичного» типа данных C #, который больше похож на 128-битное число с плавающей запятой.
Тип с плавающей запятой в MSSQL эквивалентен 64-битному двойному типу в .NET. (В моем первоначальном ответе от 2011 года говорилось, что в мантиссе может быть небольшая разница, но я проверил это в 2020 году, и они, кажется, на 100% совместимы в своем двоичном представлении как очень маленьких, так и очень больших чисел - см. Https: / /dotnetfiddle.net/wLX5Ox для моего теста).
Чтобы еще более запутать, «float» в C # является только 32-битным, поэтому в SQL он будет более эквивалентен типу real / float (24) в MSSQL, чем float / float (53).
В вашем конкретном случае использования ...
Все, что вам нужно, это 5 знаков после запятой, чтобы представить широту и долготу с точностью до одного метра, и вам нужно всего до трех цифр перед запятой для градусов. Float (24) или decimal (8,5) будут лучше всего соответствовать вашим потребностям в MSSQL, и использование float в C # достаточно хорошо, вам не нужно использовать double. Фактически, ваши пользователи, вероятно, будут благодарить вас за округление до 5 знаков после запятой, а не за то, что вы получите кучу незначительных цифр для поездки.