float
O se vuoi andare alla vecchia scuola:
real
Puoi anche usare float(53), ma significa la stessa cosa di float.
("real" equivale a float(24), non float/float(53).)
Il decimale(x,y) Il tipo di SQL Server è per quando vuoi esatto numeri decimali anziché in virgola mobile (che possono essere approssimazioni). Questo è in contrasto con il tipo di dati "decimale" C#, che è più simile a un numero in virgola mobile a 128 bit.
flottante di MSSQL tipo è equivalente al doppio a 64 bit digita .NET. (La mia risposta originale del 2011 diceva che potrebbe esserci una leggera differenza in mantissa, ma l'ho testato nel 2020 e sembrano essere compatibili al 100% nella loro rappresentazione binaria di numeri molto piccoli e molto grandi - vedi https:/ /dotnetfiddle.net/wLX5Ox per il mio test).
Per rendere le cose più confuse, un "float" in C# è solo a 32 bit, quindi sarebbe più equivalente in SQL al tipo real/float(24) in MSSQL che float/float(53).
Nel tuo caso d'uso specifico... Tutto ciò che serve sono 5 cifre dopo il punto decimale per rappresentare la latitudine e la longitudine con una precisione di circa un metro e sono necessarie solo tre cifre prima del punto decimale per i gradi. Float(24) o decimal(8,5) si adattano meglio alle tue esigenze in MSSQL e l'uso di float in C# è abbastanza buono, non è necessario double. In effetti, i tuoi utenti probabilmente ti ringrazieranno per aver arrotondato a 5 cifre decimali piuttosto che avere un mucchio di cifre insignificanti in arrivo per il viaggio.