float 和 real (Transact-SQL)
適用於:sql Server Azure SQL 資料庫 Azure SQL 受控執行個體 Azure Synapse Analytics Platform System (PDW) SQL 分析端點在 Microsoft Fabric SQL 資料庫中的 Microsoft 網狀架構倉儲Microsoft網狀架構
用來搭配浮點數值資料使用的近似數值資料類型。 浮點數資料是近似的;因此,並非資料類型範圍內的所有值都能夠精確地表示。 real 的 ISO 同義字是 float(24) 。
語法
float [ (n) ] 其中 n 是用來儲存科學記號標記法 float 數尾數的位元數目;因此,其規定有效位數和儲存體大小。 如果指定 n,則其值必須介於 1 與 53 之間。 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)] 資料類型從 1 到 53 的所有 n 值都符合 ISO 標準。 double precision 的同義字是 float(53) 。
備註
資料類型 | 範圍 | 儲存體 |
---|---|---|
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 的值轉換成任何整數類型時,就會截斷它們。
當您想要從 float 或 real 轉換成字元數據時,使用 STR 字串函式通常比 CAST( 更有用。 原因是 STR() 能夠更充分掌控格式設定。 如需詳細資訊,請參閱 STR (Transact-SQL) 和 Functions (Transact-SQL)。
在 SQL Server 2016 (13.x) 之前,float 值轉換至 decimal 或 numeric,就會限制為只有 17 個有效位數的值。 任何小於 5E-18 (當設定使用 5E-18 科學記號標記法或 0.000000000000000005 十進位標記法時) 的 float 值都會捨去為 0。 在 SQL Server 2016 (13.x) 就不再有這個限制。