分享方式:


float 和 real (Transact-SQL)

適用於:SQL ServerAzure SQL 資料庫Azure SQL 受控執行個體Azure Synapse AnalyticsAnalytics Platform System (PDW)Microsoft Fabric 中的 SQL 分析端點Microsoft Fabric 中的倉儲

用來搭配浮點數值資料使用的近似數值資料類型。 浮點數資料是近似的;因此,並非資料類型範圍內的所有值都能夠精確地表示。 real 的 ISO 同義字是 float(24)

Transact-SQL 語法慣例

語法

float [ (n) ] 其中 n 是用來儲存科學記號標記法 float 數尾數的位元數目;因此,其規定有效位數和儲存體大小。 如果指定 n,則其值必須介於 153 之間。 n 的預設值為 53

n Precision 儲存體大小
1-24 7 位數 4 個位元組
25-53 15 位數 8 個位元組

注意

SQL Server 會將 n 當做兩個可能值的其中一個來處理。 如果 1<=n<=24,則將 n 當作 24 來處理。 如果 25<=n<=53,則將 n 當作 53 來處理。

SQL Server float[(n)] 資料類型從 153 的所有 n 值都符合 ISO 標準。 double precision 的同義字是 float(53)

注意

若要檢視 SQL Server 2014 (12.x) 和更早版本的 Transact-SQL 語法,請參閱舊版文件

備註

資料類型 範圍 儲存體
float - 1.79E+308 到 -2.23E-308、0 及 2.23E-308 到 1.79E+308 這會隨著 n 的值而不同
real - 3.40E + 38 到 -1.18E - 38、0 及 1.18E - 38 到 3.40E + 38 4 個位元組

float 和 real 數據類型稱為近似數據類型。 float 和 real 的行為遵循大約數值數據類型的 IEEE 754 規格。 若要瞭解 Microsoft Visual C (MSVC) 編譯程式如何使用 IEEE 754 標準,請參閱 IEEE 浮點表示法

近似數值數據類型不會儲存指定給許多數位的確切值;它們會儲存值的接近近似值。 對於某些應用程式,指定值與預存近似值之間的微小差異並不相關。 不過,對其他人來說,差異很重要。 由於 float 和 real 數據類型的近似本質,因此當需要確切的數值行為時,請勿使用這些數據類型。 需要精確數值的範例包括財務或商務數據、涉及四捨五入或相等檢查的作業。 在這些情況下,請使用整數、十進位、數值、貨幣或smallmoney數據類型。

避免在 WHERE 子句搜尋條件中使用 float 或 real 數據行,特別是 = 和 <> 運算符。 最好將浮點數和實際數據行限制為 > 或 < 比較。

轉換 float 與 real 資料

當 float 的值轉換成任何整數類型時,就會截斷它們。

當您想要從 floatreal 轉換成字元數據時,使用 STR 字串函式通常比 CAST( 更有用。 原因是 STR() 能夠更充分掌控格式設定。 如需詳細資訊,請參閱 STR (Transact-SQL)Functions (Transact-SQL)

在 SQL Server 2016 (13.x) 之前,float 值轉換至 decimalnumeric,就會限制為只有 17 個有效位數的值。 任何小於 5E-18 (當設定使用 5E-18 科學記號標記法或 0.000000000000000005 十進位標記法時) 的 float 值都會捨去為 0。 在 SQL Server 2016 (13.x) 就不再有這個限制。