我正在爲金融交易的準確性非常重要的銀行機構構建應用程序。我正在考慮在SQL Server中使用數據類型Money
。SQL Server中MONEY數據類型的準確性需要幫助
所以我需要建議我使用的數據類型是否足以提供準確性?我也想知道哪一個更好,如果我使用numeric
數據類型或Money
數據類型?
在此先感謝
我正在爲金融交易的準確性非常重要的銀行機構構建應用程序。我正在考慮在SQL Server中使用數據類型Money
。SQL Server中MONEY數據類型的準確性需要幫助
所以我需要建議我使用的數據類型是否足以提供準確性?我也想知道哪一個更好,如果我使用numeric
數據類型或Money
數據類型?
在此先感謝
在SQL Server Books Online快速搜索會發現....
money
-922,337,203,685,477.5808 to 922,337,203,685,477.5807 8 bytes
smallmoney
- 214,748.3648 to 214,748.3647 4 bytes
的錢和smallmoney數據類型是精確到的貨幣單位的萬分之一他們代表。 (這是小數點後四位)已經固定精度和範圍
數字數據類型。
decimal[ (p[ ,s])] and numeric[ (p[ ,s])]
固定精度和刻度數字。當使用最大精度時,有效值爲,範圍從 - 10^38 +1到10^38 - 1。十進制的ISO同義詞是dec和dec(p,s)。數字在功能上等同於小數。
P(精度)
的可存儲,同時向左邊和小數點右邊十進制數字的最大總數。精度必須通過的38的最大精度爲1的值。默認精度爲18
S(刻度)
可存儲到的右側的十進制數字的最大位數小數點。比例必須是從0到p的值。只有在指定了精度的情況下才能指定比例。默認比例是0;因此,0 < = s < = p。根據精度,最大存儲大小會有所不同。
Numeric
(或Decimal
這是相同的),肯定有更大的範圍 - 你可以調整你之前或小數點後多少位數字需要。
在另一方面 - 甚至Money
精確到十分之一的美元或歐元或任何貨幣你感興趣的千分之一 - 這是通常足夠,即使是銀行....
所以基本上:
如果小數點之前需要小數點後超過4顯著位,或15位以上 - 挑NUMERIC
/DECIMAL
否則,MONEY
將會很好
一些爭論/反對金錢在這裏:http://sqlblog.com/blogs/aaron_bertrand/archive/2008/04/27/performance-storage-comparisons-money-vs-decimal.aspx和這裏:http:// groups.google.com/group/microsoft.public.sqlserver.server/browse_thread/thread/e19bf068e208dd5b/f79e614829931537?hl=en&lnk=st&q=author:kass+money+accuracy&pli=1 –