Delen via


float en real (Transact-SQL)

Van toepassing op:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)SQL Analytics-eindpunt in Microsoft FabricMagazijn in Microsoft FabricSQL-database in Microsoft Fabric Preview

Gegevenstypen van geschatte getallen voor gebruik met numerieke drijvende kommagegevens. Gegevens over drijvende komma zijn bij benadering; Daarom kunnen niet alle waarden in het gegevenstypebereik exact worden weergegeven. Het ISO-synoniem voor echte is float(24).

Transact-SQL syntaxis-conventies

Syntax

float [ (n) ] Waarbij n het aantal bits is dat wordt gebruikt om de mantissa van het floatnummer op te slaan in wetenschappelijke notatie en bepaalt daarom de precisie en opslaggrootte. Als n is opgegeven, moet dit een waarde tussen 1 en 53 zijn. De standaardwaarde van n is 53.

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

Note

SQL Server behandelt n als een van de twee mogelijke waarden. Als 1<=n<=24, wordt n behandeld als 24. Als 25<=n<=53, wordt n behandeld als 53.

Het gegevenstype SQL Server float[(n)] voldoet aan de ISO-standaard voor alle waarden van n van 1 tot en met 53. Het synoniem voor dubbele precisie is float(53).

Remarks

Data type Range Storage
float - 1,79E+308 tot -2.23E-308, 0 en 2.23E-308 tot 1,79E+308 Afhankelijk van de waarde van n
real - 3.40E + 38 tot -1.18E - 38, 0 en 1.18E - 38 tot 3,40E + 38 4 Bytes

De float- en echte gegevenstypen worden geschatte gegevenstypen genoemd. Het gedrag van float en real volgt de IEEE 754-specificatie over geschatte numerieke gegevenstypen. Zie IEEE Floating-Point-weergave voor meer informatie over hoe de MSVC-compiler (Microsoft Visual C) gebruikmaakt van de IEEE 754-standaard

Bij benadering van numerieke gegevenstypen worden niet de exacte waarden opgeslagen die zijn opgegeven voor veel getallen; ze slaan een nauwe benadering van de waarde op. Voor sommige toepassingen is het kleine verschil tussen de opgegeven waarde en de opgeslagen benadering niet relevant. Voor anderen is het verschil echter belangrijk. Vanwege de geschatte aard van de float- en echte gegevenstypen, gebruikt u deze gegevenstypen niet wanneer exact numeriek gedrag is vereist. Voorbeelden die nauwkeurige numerieke waarden vereisen, zijn financiële of zakelijke gegevens, bewerkingen met afronding of gelijkheidscontroles. In dergelijke gevallen gebruikt u de gegevenstypen integer, decimaal, numeriek, geld of smallmoney.

Vermijd het gebruik van float- of echte kolommen in where-componentzoekvoorwaarden, met name de = en <> operators. U kunt het beste float- en echte kolommen beperken tot > of < vergelijkingen.

Float- en echte gegevens converteren

Waarden van float worden afgekapt wanneer ze worden geconverteerd naar een geheel getaltype.

Wanneer u wilt converteren van float - of echt naar tekengegevens, is het gebruik van de functie STR-tekenreeks doorgaans nuttiger dan CAST( ). De reden hiervoor is dat STR() meer controle over opmaak mogelijk maakt. Zie STR (Transact-SQL) en Functions (Transact-SQL) voor meer informatie.

Vóór SQL Server 2016 (13.x) is de conversie van floatwaarden tot decimale of numerieke waarden beperkt tot alleen waarden van precisie 17 cijfers. Elke floatwaarde kleiner dan 5E-18 (wanneer deze is ingesteld met behulp van de wetenschappelijke notatie van 5E-18 of de decimale notatie van 0,000000000000005) wordt naar beneden afgerond op 0. Dit is geen beperking meer vanaf SQL Server 2016 (13.x).