使用 decimal、float ,numeric,money和 real 數據類型

decimal 數據類型最多可以存儲 38 個數字,所有這些數字均可位於小數點後面。decimal 數據類型存儲精確的數字表示形式,存儲值沒有近似值。

定義 decimal 列、變量和參數的兩種屬性爲:

p
指定精度或對象能夠支持的數字個數。
s
指定可以放在小數點右邊的小數位數或數字個數。
p 和 s 必須遵守規則:0 <= s <= p <= 38。
numeric 和 decimal 數據類型的默認最大精度爲 38。在 Transact-SQL 中,numeric 的功能等同於 decimal 數據類型。

當數據值必須嚴格按指定存儲時,可以使用 decimal 數據類型來存儲帶小數的數字。

有關數學運算如何影響結果的精度和小數位數的詳細信息,請參閱精度、小數位數和長度 (Transact-SQL)。


使用 float 和 real 數據

float 和 real 數據類型被稱爲近似數據類型。float 和 real 的使用遵循有關近似數值數據類型的 IEEE 754 規範。

近似數值數據類型並不存儲爲許多數字指定的精確值,它們只儲存這些值的最近似值。在很多應用程序中,指定值與存儲的近似值之間的微小差異並不明顯。但有時這些差異也較明顯。由於 float 和 real 數據類型的這種近似特性,因此當要求使用精確數值時,比如在財務應用程序、需要舍入的操作或等值覈對中,請勿使用這些數據類型。而應使用 integer、decimal、money 或 smallmoney 數據類型。

在 WHERE 子句搜索條件(特別是 = 和 <> 運算符)中,應避免使用 float 列或 real 列。float 列和 real 列最好只限於 > 比較或 < 比較。

IEEE 754 規範提供四種舍入模式:舍入到最近、向上舍入、向下舍入以及舍入到零。Microsoft SQL Server 2005 使用向上舍入。所有的數值都必須精確到確定的精度,但會產生微小的浮點值差異。因爲浮點數字的二進制表示法可以採用很多合法舍入規則中的任意一條,因此我們不可能可靠地量化浮點值。
 
貨幣數據
貨幣數據表示正的或負的貨幣值。在 Microsoft® SQL Server™ 2000 中使用 money 和 smallmoney 數據類型存儲貨幣數據。貨幣數據存儲的精確度爲四位小數。可以存儲在 money 數據類型中的值的範圍是 -922,337,203,685,477.5808 至 +922,337,203,685,477.5807(需 8 個字節的存儲空間)。可以存儲在 smallmoney 數據類型中的值的範圍是 -214,748.3648 至 214,748.3647(需 4 個字節的存儲空間)。如果數值超過了上述範圍,則可使用 decimal 數據類型代替。

money 和 smallmoney
代表貨幣或現金值的貨幣數據類型。

money

貨幣數據值介於 -2^63 (-922,337,203,685,477.5808) 與 2^63 - 1 (+922,337,203,685,477.5807) 之間,精確到貨幣單位的千分之十。存儲大小爲 8 個字節。

smallmoney

貨幣數據值介於 -214,748.3648 與 +214.748,3647 之間,精確到貨幣單位的千分之十。存儲大小爲 4 個字節。

發佈了41 篇原創文章 · 獲贊 0 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章