Udostępnij za pomocą


float i real (Transact-SQL)

Dotyczy:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)Punkt końcowy analizy SQL w usłudze Microsoft FabricHurtownia danych w usłudze Microsoft FabricBaza danych SQL w usłudze Microsoft Fabric

Przybliżona liczba typów danych do użycia z danymi liczbowymi zmiennoprzecinkowych. Dane zmiennoprzecinkowe są przybliżone; dlatego nie wszystkie wartości w zakresie typów danych mogą być reprezentowane dokładnie. Synonim ISO dla rzeczywistej jest float(24).

Transact-SQL konwencje składni

Syntax

float [ (n) ] Gdzie n jest liczbą bitów używanych do przechowywania mantysy liczby zmiennoprzecinkowej w notacji naukowej, a zatem określa precyzję i rozmiar magazynu. Jeśli parametr n jest określony, musi być wartością z zakresu od 1 do 53. Wartość domyślna n to 53.

Wartość n Precision Rozmiar magazynu
1-24 7 cyfr 4 bajty
25-53 15 cyfr 8 bajtów

Note

Program SQL Server traktuje n jako jedną z dwóch możliwych wartości. Jeśli wartość 1<=n<=24, n jest traktowana jako 24. Jeśli wartość 25<=n<=53, n jest traktowana jako 53.

Typ danych float[(n)] programu SQL Server jest zgodny ze standardem ISO dla wszystkich wartości n z zakresu od 1 do 53. Synonimem podwójnej precyzji jest float(53).

Remarks

Typ danych Range Magazyn
float - 1,79E+308 do -2.23E-308, 0 i 2.23E-308 do 1.79E+308 Zależy od wartości n
real - 3,40E + 38 do -1,18E - 38, 0 i 1,18E - od 38 do 3,40E + 38 4 bajty

Typy danych zmiennoprzecinkowych i rzeczywistych są znane jako przybliżone typy danych. Zachowanie liczby zmiennoprzecinkowej i rzeczywistej jest zgodne ze specyfikacją IEEE 754 w przypadku przybliżonych typów danych liczbowych. Aby dowiedzieć się, jak kompilator microsoft Visual C (MSVC) używa standardu IEEE 754, zobacz IEEE Floating-Point Reprezentacja

Przybliżone typy danych liczbowych nie przechowują dokładnych wartości określonych dla wielu liczb; przechowują bliskie przybliżenie wartości. W przypadku niektórych aplikacji niewielka różnica między określoną wartością a przechowywanym przybliżeniem nie jest odpowiednia. Dla innych jednak różnica jest ważna. Ze względu na przybliżony charakter typów danych zmiennoprzecinkowych i rzeczywistych nie używaj tych typów danych, gdy wymagane jest dokładne zachowanie liczbowe. Przykłady, które wymagają dokładnych wartości liczbowych, to dane finansowe lub biznesowe, operacje obejmujące zaokrąglanie lub kontrole równości. W takich przypadkach użyj typów danych liczb całkowitych, dziesiętnych, liczbowych, pieniężnych lub małych.

Unikaj używania kolumn zmiennoprzecinkowych lub rzeczywistych w warunkach wyszukiwania klauzul WHERE, zwłaszcza operatorów = i <> . Najlepiej ograniczyć liczby zmiennoprzecinkowe i rzeczywiste kolumny do > lub < porównania.

Konwertowanie danych zmiennoprzecinkowych i rzeczywistych

Wartości zmiennoprzecinkowych są obcinane, gdy są konwertowane na dowolny typ liczb całkowitych.

Jeśli chcesz przekonwertować dane z liczby zmiennoprzecinkowej lub rzeczywistej na dane znaków, użycie funkcji ciągu STR jest zwykle bardziej przydatne niż CAST( ). Przyczyną jest to, że funkcja STR() zapewnia większą kontrolę nad formatowaniem. Aby uzyskać więcej informacji, zobacz STR (Transact-SQL) i Functions (Transact-SQL).

Przed programem SQL Server 2016 (13.x) konwersja wartości zmiennoprzecinkowych na liczbę dziesiętną lub liczbową jest ograniczona do wartości tylko dokładności 17 cyfr. Każda wartość zmiennoprzecinkowa mniejsza niż 5E-18 (w przypadku ustawienia przy użyciu notacji naukowej 5E-18 lub notacji dziesiętnej 0,000000000000000005) zaokrągla do 0. Nie jest to już ograniczenie programu SQL Server 2016 (13.x).