Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Was stellt ein Double in SQL Server dar?

float

Oder wenn Sie zur alten Schule wechseln möchten:

real

Sie können auch float(53) verwenden, aber es bedeutet dasselbe wie float.

("real" entspricht float(24), nicht float/float(53).)

Die Dezimalzahl (x,y) Der SQL Server-Typ ist für den Fall, dass Sie exakt möchten Dezimalzahlen anstelle von Fließkommazahlen (die Annäherungen sein können). Dies steht im Gegensatz zum C#-Datentyp "Dezimal", der eher einer 128-Bit-Gleitkommazahl entspricht.

Float von MSSQL type entspricht dem 64-Bit double Geben Sie .NET ein. (Meine ursprüngliche Antwort aus dem Jahr 2011 besagte, dass es einen kleinen Unterschied in der Mantisse geben könnte, aber ich habe dies im Jahr 2020 getestet und sie scheinen in ihrer binären Darstellung sowohl sehr kleiner als auch sehr großer Zahlen zu 100 % kompatibel zu sein – siehe https:/ /dotnetfiddle.net/wLX5Ox für meinen Test).

Um die Dinge noch verwirrender zu machen, ist ein „Float“ in C# nur 32-Bit, daher wäre es in SQL eher dem real/float(24)-Typ in MSSQL als float/float(53).

In Ihrem speziellen Anwendungsfall... Für Längen- und Breitengrad benötigen Sie nur 5 Stellen hinter dem Komma auf etwa einen Meter genau, und für die Gradzahl benötigen Sie nur bis zu drei Stellen vor dem Komma. Float(24) oder decimal(8,5) passen am besten zu Ihren Anforderungen in MSSQL, und die Verwendung von float in C# ist gut genug, Sie brauchen kein Double. Tatsächlich werden Ihre Benutzer es Ihnen wahrscheinlich danken, dass Sie auf 5 Dezimalstellen gerundet haben, anstatt einen Haufen unbedeutender Ziffern mitzunehmen.