float
Або якщо ви хочете пройти стару школу:
real
Ви також можете використовувати float (53), але це означає те саме, що і float.
("real" є еквівалентом float (24), а не float / float (53).)
Десяткове (х, у) типу SQL Server для , якщо ви хочете точні десяткових чисел , а не з плаваючою точкою (які можуть бути приблизними). Це на відміну від типу даних "# десяткових" C #, що більше нагадує 128-бітове число з плаваючою комою.
Float тип MSSQL еквівалентний 64-бітовому подвійному типу в .NET. (У моїй оригінальній відповіді з 2011 року сказано, що може бути незначна різниця в мантісі, але я перевірив це в 2020 році, і вони, схоже, є на 100% сумісними у своєму бінарному представленні як дуже малих, так і дуже великих чисел - див. Https: / /dotnetfiddle.net/wLX5Ox для мого тесту).
Щоб зробити речі більш заплутаними, "float" в C # є лише 32-розрядним, тому в SQL було б більш еквівалентно типу real / float (24) в MSSQL, ніж float / float (53).
У вашому конкретному випадку використання ...
Все, що вам потрібно, це 5 місць після десяткової крапки, щоб представити широту і довготу в межах точності приблизно одного метра, і вам потрібно лише до трьох цифр перед десятковою точкою для градусів. Float (24) або десятковий (8,5) найкраще відповідатимуть вашим потребам у MSSQL, а використання float в C # досить добре, вам не потрібно подвійне. Насправді, ваші користувачі, ймовірно, дякують вам за округлення до 5 знаків після коми, а не за купу незначних цифр, які приходять на поїздку.