float
Oder wenn Sie es ganz altmodisch mögen:
real
Sie können auch float(53) verwenden, aber das bedeutet das Gleiche wie float.
("real" ist gleichbedeutend mit float(24), nicht mit float/float(53).
El dezimal(x,y) Der Typ SQL Server ist dafür gedacht, wenn Sie genau Dezimalzahlen anstelle von Fließkommazahlen (die Näherungswerte sein können). Dies steht im Gegensatz zum C#-Datentyp "decimal", der eher einer 128-Bit-Gleitkommazahl entspricht.
MSSQL's Schwimmer entspricht dem 64-Bit-Typ doppelt Typ in .NET. (Meine ursprüngliche Antwort aus dem Jahr 2011 besagte, dass es einen leichten Unterschied in der Mantisse geben könnte, aber ich habe dies im Jahr 2020 getestet und sie scheinen in ihrer binären Darstellung von sowohl sehr kleinen als auch sehr großen 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, so dass es in SQL eher dem Typ real/float(24) in MSSQL als float/float(53) entsprechen würde.
In Ihrem speziellen Anwendungsfall... Sie benötigen lediglich 5 Nachkommastellen, um den Breiten- und Längengrad mit einer Genauigkeit von etwa einem Meter darzustellen, und nur bis zu drei Stellen vor dem Komma für die Gradangaben. Float(24) oder decimal(8,5) wird Ihren Bedürfnissen in MSSQL am besten gerecht, und die Verwendung von float in C# ist gut genug, Sie brauchen double nicht. Ihre Benutzer werden es Ihnen wahrscheinlich sogar danken, dass Sie auf 5 Dezimalstellen gerundet haben, anstatt einen Haufen unbedeutender Ziffern mitzunehmen.
0 Stimmen
Hier sind die CLR-Datentyp-Zuordnungen zu SQL Server: http://msdn.microsoft.com/en-us/library/system.data.sqldbtype.aspx
0 Stimmen
Es gibt eine großartiger Thread auf MSDN der den Hauptunterschied zwischen FLOAT und DECIMAL beschreibt. Kurz gesagt, Float ist ein Näherungswert und kann einige Werte nicht darstellen. Sehen Sie sich die akzeptierte Antwort an.