Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Cosa rappresenta un doppio nel server sql?

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.