Dela via


float och real (Transact-SQL)

Gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalysplattformssystem (PDW)SQL-analysslutpunkt i Microsoft FabricLager i Microsoft FabricSQL-databas i Förhandsversion av Microsoft Fabric

Ungefärliga datatyper för användning med numeriska flyttalsdata. Flyttalsdata är ungefärliga. Därför kan inte alla värden i datatypsintervallet representeras exakt. ISO-synonymen för verkliga är float(24).

Transact-SQL syntaxkonventioner

Syntax

float [ (n) ] Där n är antalet bitar som används för att lagra mantissan för flytnumret i vetenskaplig notation och därför dikterar precisionen och lagringsstorleken. Om n anges måste det vara ett värde mellan 1 och 53. Standardvärdet för n är 53.

n value Precision Storage size
1-24 7 digits 4 bytes
25-53 15 digits 8 bytes

Note

SQL Server behandlar n som ett av två möjliga värden. Om 1<=n<=24 behandlas n som 24. Om 25<=n<=53 behandlas n som 53.

Datatypen SQL Server float[(n)] uppfyller ISO-standarden för alla värden för n från 1 till 53. Synonymen för dubbel precision är float(53).

Remarks

Data type Range Storage
float - 1.79E+308 till -2.23E-308, 0 och 2.23E-308 till 1.79E+308 Beror på värdet för n
real - 3.40E + 38 till -1.18E - 38, 0 och 1.18E - 38 till 3.40E + 38 4 Bytes

Flyttal och verkliga datatyper kallas ungefärliga datatyper. Beteendet för float och real följer IEEE 754-specifikationen för ungefärliga numeriska datatyper. Information om hur Microsoft Visual C-kompilatorn (MSVC) använder IEEE 754-standarden finns i IEEE Floating-Point Representation

Ungefärliga numeriska datatyper lagrar inte de exakta värden som anges för många tal. de lagrar en nära uppskattning av värdet. För vissa program är den lilla skillnaden mellan det angivna värdet och den lagrade uppskattningen inte relevant. För andra är skillnaden dock viktig. På grund av den ungefärliga typen av flyttal och verkliga datatyper ska du inte använda dessa datatyper när exakt numeriskt beteende krävs. Exempel som kräver exakta numeriska värden är finansiella data eller affärsdata, åtgärder som omfattar avrundning eller likhetskontroller. I dessa fall använder du datatyperna heltal, decimaler, numeriska, pengar eller smallmoney.

Undvik att använda flyttal eller verkliga kolumner i WHERE-satsens sökvillkor, särskilt operatorerna = och <> . Det är bäst att begränsa flyttal och verkliga kolumner till > eller < jämförelser.

Konvertera flyttal och verkliga data

Värden för flyttal trunkeras när de konverteras till alla heltalstyper.

När du vill konvertera från flyttal eller verklig till teckendata är det vanligtvis mer användbart att använda STR-strängfunktionen än CAST( ). Anledningen är att STR() ger mer kontroll över formateringen. Mer information finns i STR (Transact-SQL) och Functions (Transact-SQL).

Före SQL Server 2016 (13.x) begränsas konverteringen av flyttalsvärden till decimaler eller numeriska värden endast till värden med precision 17 siffror. Ett flyttalvärde som är mindre än 5E-18 (när det anges med antingen den vetenskapliga notationen 5E-18 eller decimaltecknet 0,0000000000000005) avrundar ned till 0. Detta är inte längre en begränsning från och med SQL Server 2016 (13.x).