387 Stimmen

Was stellt ein Double in Sql Server dar?

Ich habe eine Reihe von Immobilien in C# die sind double und ich möchte diese in einer Tabelle in SQL Server speichern, aber ich habe festgestellt, dass es keine double Typ, was also am besten zu verwenden ist, decimal o float ?

Darin werden Werte für Breiten- und Längengrade gespeichert, weshalb ich eine möglichst hohe Genauigkeit benötige.

Vielen Dank für die bisherigen Antworten.

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.

5voto

David Basarab Punkte 69965

Für SQL Sever:

Dezimaltyp ist eine 128-Bit-Zahl mit Vorzeichen Float ist eine 64-Bit-Zahl mit Vorzeichen.

Die richtige Antwort lautet Schwimmer Ich habe mich bei den Dezimalzahlen geirrt.

Der Grund dafür ist, dass bei der Verwendung eines Dezimaltyps niemals 64 Bit des Dezimaltyps gefüllt werden.

Obwohl decimal keine Fehlermeldung auslöst, wenn Sie versuchen, einen int-Typ zu verwenden.

Aquí ist eine schöne Referenztabelle für die Typen.

0 Stimmen

Jetzt ist es noch verwirrender mit zwei verschiedenen Antworten :p

1 Stimmen

Lassen Sie sich nicht verwirren. Diese Antwort ist falsch. Decimal ist ein Basis-10-Typ; Float (in SQL Server und der CLR) ist ein Basis-2-Typ.

4voto

DaveN59 Punkte 3428

Das klingt so, als könnten Sie es sich aussuchen. Wenn Sie float wählen, verlieren Sie möglicherweise 11 Stellen an Genauigkeit. Wenn das akzeptabel ist, sollten Sie es tun - offenbar hielten die Linq-Designer dies für einen guten Kompromiss.

Wenn Ihre Anwendung jedoch diese zusätzlichen Ziffern benötigt, verwenden Sie Dezimalzahlen. Dezimalzahlen (richtig implementiert) sind ohnehin viel genauer als Fließkommazahlen - keine umständliche Umrechnung von der Basis 10 zur Basis 2 und zurück.

0 Stimmen

Hier werden die Werte für Breiten- und Längengrad gespeichert. Macht das einen Unterschied?

0 Stimmen

Das ist einfach falsch... sowohl float/float(53) in MSSQL als auch double in C# haben eine Genauigkeit von etwa 15 Stellen. Sie sind nicht genau dasselbe, aber nahe genug. Decimal, auf der anderen Seite, ist komplett Overkill für die Speicherung einer doppelten, und es muss zurück zur Basis 2 für alle Berechnungen in SQL Server zu gehen, und zurück zu kommen, um C # als ein Doppel.

0 Stimmen

Ich korrigiere mich. Was Sie sagen, ergibt für mich absolut Sinn. Dezimal macht nur Sinn, wenn man es überall als Dezimalwert beibehält. Sie verlieren jedes Mal an Wert, wenn Sie eine Konvertierung von der Basis 10 zur Basis 2 (und zurück) vornehmen.

-3voto

A Float steht für double im SQL-Server. Sie können einen Beweis aus der Codierung in C# in Visual Studio finden. Hier habe ich deklariert Overtime als Float in SQL Server und in C#. So kann ich konvertieren

int diff=4;
attendance.OverTime = Convert.ToDouble(diff);

Aquí OverTime wird erklärt float type

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X