使用 decimal、float 與 real 資料

decimal 資料類型最多可以儲存 38 位數字,而且可以全部在小數點右邊。decimal 資料類型以確實的表示法儲存數字,而不是儲存值的近似值。

定義 decimal 資料行、變數與參數的兩個屬性如下:

  • p
    指定精確度,也就是物件可包含的位數。
  • s
    指定小數位數,也就是可放在小數點右邊的位數。
    ps 必須遵守規則:0 <= s <= p <= 38。

numericdecimal 資料類型的預設最大有效位數為 38。在 Transact-SQL 中,numeric 的功能等同於 decimal 資料類型。

decimal 資料類型可用來儲存含小數的數字,而且資料值必須確實以指定的方式儲存。

如需數學運算如何影響結果的有效位數與小數位數的詳細資訊,請參閱<有效位數、小數位數和長度 (Transact-SQL)>。

ms187912.note(zh-tw,SQL.90).gif附註:
decimalnumeric 資料類型可以儲存成可變長度格式,以大幅縮減儲存空間。如需有關 Vardecimal 儲存格式的詳細資訊,請參閱<將十進位資料儲存成可變長度>。

使用 float 與 real 資料

floatreal 資料類型也稱為近似資料類型。floatreal 的行為遵循 IEEE 754 有關近似數值資料類型的規格。

近似數值資料類型不會儲存對許多數字指定的精確數值,而會儲存十分接近的近似值。針對許多應用程式來說,指定數值和所儲存近似值之間的些微差異並不值得注意。不過有時候這些差異卻又十分重要。由於 floatreal 資料類型的近似本質,在需要精確數值行為時請勿使用這些資料類型,例如財務應用程式、牽涉到四捨五入的作業或者進行相等檢查作業時。反之,請使用 integer、decimalmoneysmallmoney 資料類型。

避免在 WHERE 子句的搜尋條件中使用 floatreal 資料行,尤其是 = 與 <> 運算子。最好將 floatreal 資料行限制為 > 或 < 比較。

IEEE 754 規格提供四種四捨五入模式:四捨五入進位、無條件進位、無條件捨去與四捨五入到零。Microsoft SQL Server 2005 則使用無條件進位。所有運算都準確到保證的精確度,但可能產生稍微不同的浮點值。因為浮點數的二進位表示法可以使用任一種有效的四捨五入方式,所以不可能有效地限定浮點值。

請參閱

其他資源

資料類型 (Transact-SQL)
decimal 和 numeric (Transact-SQL)
float 和 real (Transact-SQL)

說明及資訊

取得 SQL Server 2005 協助

變更歷程記錄

版本 歷程記錄

2006 年 12 月 12 日

新增內容:
  • 新增有關 Vardecimal 儲存格式的附註與連結。