decimal 类型存储为一个 12 字节的整数部分、一个 1 位的符号和一个刻度因子。
decimal 类型可以精确地表示非常大或非常精确的小数。大至 1028(正或负)以及有效位数多达 28 位的数字可以作为 decimal 类型存储而不失其精确性。该类型对于必须避免舍入错误的应用程序(如记账)很有用。
相应的 .NET Framework 数据类型为 System.Decimal。decimal 数据类型的属性和方法与 System.Decimal 属性和方法相同。
MSDN中具体介绍:http://msdn.microsoft.com/library/chs/default.asp?url=/library/CHS/cpref/html/frlrfSystemDecimalMembersTopic.asp
比较smallint,integer和decimal:
你需要确定数据是怎么样使用的,并且你需要怎么样去控制它,smallint的取值范围是-32768到32767。最小的integer值是-2,147,483,648,而最大的integer的值是2,147,483,647,如果你可以预测到所保存的数的值比± 2十亿大(或小),那么应该考虑使用decimal,而不是integer。
你可能也需要考虑使用decimal而不是integer可以更好地控制了列值域,比如,如果你只需要小于99999的值,那么decimal(5,0)可能比用integer好得多,这是因为它允许比32767大的值,而不大于99999.