Sdílet prostřednictvím


float a real (Transact-SQL)

Platí pro:SQL ServerAzure SQL DatabaseSpravovaná instance Azure SQLAzure Synapse AnalyticsAnalytics Platform System (PDW)Koncový bod analýzy SQL v Microsoft FabricSklad v Microsoft FabricDatabáze SQL v Microsoft Fabric

Datové typy přibližných čísel pro použití s číselnými daty s plovoucí desetinou čárkou Data s plovoucí desetinou čárkou jsou přibližná; proto nelze přesně reprezentovat všechny hodnoty v oblasti datových typů. Synonymum ISO pro reálné je float(24).

Transact-SQL konvence syntaxe

Syntax

float [ (n) ] Kde n je počet bitů, které se používají k uložení manissa čísla float ve vědeckém zápisu, a proto určuje přesnost a velikost úložiště. Pokud je zadán n , musí to být hodnota mezi 1 a 53. Výchozí hodnota n je 53.

n hodnota Precision Velikost úložiště
1-24 7 číslic 4 bajty
25-53 15 číslic 8 bajtů

Note

SQL Server považuje n za jednu ze dvou možných hodnot. Pokud 1<=n<=24, považuje se n za 24. Pokud 25<=n<=53, považuje se n za 53.

Datový typ SQL Server float[(n)] splňuje normu ISO pro všechny hodnoty n od 1 do 53. Synonymum pro dvojitou přesnost je float(53).

Remarks

Datový typ Range Storage
float - 1,79E+308 až -2,23E-308, 0 a 2,23E-308 až 1,79E+308 Závisí na hodnotě n
real - 3,40E + 38 až -1,18E - 38, 0 a 1,18E - 38 až 3,40E + 38 4 bajty

Plovoucí a reálné datové typy se označují jako přibližné datové typy. Chování typu float a real se řídí specifikací IEEE 754 pro přibližné číselné datové typy. Informace o tom, jak kompilátor Microsoft Visual C (MSVC) používá standard IEEE 754, najdete v tématu IEEE Floating-Point reprezentace

Přibližné číselné datové typy neukládají přesné hodnoty zadané pro mnoho čísel; ukládají blízkou aproximaci hodnoty. U některých aplikací není malý rozdíl mezi zadanou hodnotou a uloženou aproximací relevantní. Pro ostatní je ale rozdíl důležitý. Vzhledem k přibližné povaze plovoucích a skutečných datových typů nepoužívejte tyto datové typy, pokud je vyžadováno přesné číselné chování. Příklady, které vyžadují přesné číselné hodnoty, jsou finanční nebo obchodní data, operace zahrnující zaokrouhlování nebo kontroly rovnosti. V těchto případech použijte celé číslo, desetinné číslo, číslice, peníze nebo malé datové typy.

V podmínkách hledání klauzule WHERE nepoužívejte plovoucí nebo reálné sloupce, zejména operátory = a <> operátory. Nejlepší je omezit plovoucí a skutečné sloupce na > porovnání nebo < jejich porovnání.

Převod plovoucích a skutečných dat

Hodnoty float jsou zkráceny, když jsou převedeny na libovolný celočíselné typy.

Pokud chcete převést z plovoucích nebo skutečných na znaková data, je použití funkce řetězce STR obvykle užitečnější než CAST( ). Důvodem je, že STR() umožňuje větší kontrolu nad formátováním. Další informace naleznete v tématu STR (Transact-SQL) a funkce (Transact-SQL).

Před SQL Serverem 2016 (13.x) je převod hodnot float na desetinné číslo omezen pouze na hodnoty přesnosti 17 číslic. Jakákoli hodnota float menší než 5E-18 (při nastavení pomocí vědeckého zápisu 5E-18 nebo desetinného zápisu 0,00000000000000005) se zaokrouhlí dolů na 0. Toto omezení už neplatí pro SQL Server 2016 (13.x).