Freigeben über


float und real (Transact-SQL)

Gilt für: SQL Server Azure SQL-Datenbank Azure SQL verwaltete Instanz Azure Synapse Analytics Platform System (PDW) SQL Analytics Platform-Endpunkt in Microsoft Fabric Warehouse in Microsoft Fabric Warehouse

Ungefähre Zahlendatentypen für numerische Gleitkommadaten. Gleitkommadaten sind Näherungswerte, deshalb können nicht alle Werte im Bereich des Datentyps exakt dargestellt werden. Das ISO-Synonym für real ist float(24) .

Transact-SQL-Syntaxkonventionen

Syntax

float [ (n) ]. Hierbei entspricht n der Anzahl von Bits, die zum Speichern der Mantisse der Gleitkommazahl in der wissenschaftlichen Schreibweise verwendet werden. Dadurch werden die Genauigkeit und die Speichergröße festlegt. Wenn n angegeben wird, muss es sich um einen Wert zwischen 1 und 53 handeln. Der Standardwert von n lautet 53.

Wert n Precision Speichergröße
1-24 7 Stellen 4 Byte
25-53 15 Stellen 8 Byte

Hinweis

SQL Server verarbeitet n als einen von zwei möglichen Werten. Wenn 1<=n<=24 gegeben ist, wird n als 24 behandelt. Wenn 25<=n<=53 gegeben ist, wird n als 53 behandelt.

Der SQL Server-Datentyp float[ (n) ] entspricht dem ISO-Standard für alle Werte von n zwischen 1 und 53. Das Synonym für double precision lautet float(53) .

Hinweis

Informationen zum Anzeigen der Transact-SQL-Syntax für SQL Server 2014 (12.x) und früher finden Sie unter Dokumentation zu früheren Versionen.

Hinweise

Datentyp Range Storage
float - 1,79E+308 bis -2,23E-308, 0 und 2,23E-308 bis 1,79E+308 Hängt vom Wert für n ab.
real - 3,40E + 38 bis -1,18E - 38, 0 und 1,18E - 38 bis 3,40E + 38 4 Byte

Die Float- und realen Datentypen werden als ungefähre Datentypen bezeichnet. Das Verhalten von Float und real folgt der IEEE 754-Spezifikation für ungefähre numerische Datentypen. Informationen dazu, wie der Microsoft Visual C (MSVC)-Compiler den IEEE 754-Standard verwendet, finden Sie unter IEEE Floating-Point Representation

Ungefähre numerische Datentypen speichern nicht die genauen Werte, die für viele Zahlen angegeben sind. sie speichern eine enge Annäherung des Werts. Bei einigen Anwendungen ist der winzige Unterschied zwischen dem angegebenen Wert und der gespeicherten Annäherung nicht relevant. Für andere ist der Unterschied jedoch wichtig. Verwenden Sie aufgrund der ungefähren Art der Float- und reale Datentypen diese Datentypen nicht, wenn ein genaues numerisches Verhalten erforderlich ist. Beispiele für präzise numerische Werte sind Finanz- oder Geschäftsdaten, Vorgänge mit Rundung oder Gleichheitsprüfungen. Verwenden Sie in diesen Fällen die Datentypen ganzzahl, dezimal, numerisch, geld oder smallmoney.

Vermeiden Sie die Verwendung von Float- oder realen Spalten in WHERE-Klauseln-Suchbedingungen, insbesondere die Operatoren = und <> Operatoren. Es ist am besten, float- und reale Spalten auf oder < Vergleiche zu > beschränken.

Konvertieren von float- und real-Daten

Die Werte des Float-Werts werden abgeschnitten, wenn sie in einen beliebigen ganzzahligen Typ konvertiert werden.

Wenn Sie von Float - oder Realdaten in Zeichendaten konvertieren möchten, ist die Verwendung der STR-Zeichenfolgenfunktion in der Regel nützlicher als CAST( ). Der Grund dafür ist, dass STR() mehr Kontrolle über die Formatierung ermöglicht. Weitere Informationen finden Sie unter STR (Transact-SQL) und unter Funktionen (Transact-SQL).

Vor SQL Server 2016 (13.x) ist die Konvertierung von float-Werten in decimal- oder numeric-Werte auf Werte mit einer Genauigkeit von 17 Stellen beschränkt. Jeder float-Wert kleiner als 5E-18 (der entweder in der wissenschaftlichen Schreibweise als 5E-18 oder in der Dezimalschreibweise als 0,000000000000000005 festgelegt ist) wird auf 0 abgerundet. Dies stellt ab SQL Server 2016 (13.x) keine Einschränkung mehr dar.