Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Qu'est-ce que représente un double dans sql server ?

float

Ou si vous voulez aller à l'ancienne :

real

Vous pouvez également utiliser float(53), mais cela signifie la même chose que float.

("réel" est équivalent à float(24), pas float/float(53).)

Le décimal(x,y) Le type SQL Server est pour quand vous voulez exact des nombres décimaux plutôt que des nombres à virgule flottante (qui peuvent être des approximations). Cela contraste avec le type de données "décimal" C #, qui ressemble plus à un nombre à virgule flottante de 128 bits.

Le flottant de MSSQL type est équivalent au double 64 bits saisissez .NET. (Ma réponse originale de 2011 disait qu'il pourrait y avoir une légère différence dans la mantisse, mais j'ai testé cela en 2020 et ils semblent être 100% compatibles dans leur représentation binaire des très petits et très grands nombres -- voir https:/ /dotnetfiddle.net/wLX5Ox pour mon test).

Pour rendre les choses plus confuses, un "float" en C # n'est que 32 bits, il serait donc plus équivalent en SQL au type real/float(24) dans MSSQL que float/float(53).

Dans votre cas d'utilisation spécifique... Tout ce dont vous avez besoin est de 5 chiffres après la virgule pour représenter la latitude et la longitude avec une précision d'environ un mètre, et vous n'avez besoin que de trois chiffres avant la virgule pour les degrés. Float(24) ou decimal(8,5) répondra le mieux à vos besoins dans MSSQL, et l'utilisation de float en C# est assez bonne, vous n'avez pas besoin de double. En fait, vos utilisateurs vous remercieront probablement d'avoir arrondi à 5 décimales plutôt que d'avoir un tas de chiffres insignifiants à la clé.