大多数商业应用程序存储的数字在小数点左右两边有固定位数。例如:美国货币金额写成小数点右边有两位。正常情况下,根据所记录的交易的类型,您还知道左边所需的位数:个人预算可能是 5 位,小企业可能是 7 位,国家预算可能是 12 或 13 位。
图: 定点数中的精度与小数位之间的关系
与 DECIMAL(p) 数据类型相似,DECIMAL(p,s) 占用的空间与其精度成正比。一个值占用 (p +3)/2 个字节(如果小数位是偶数)或 (p + 4)/2 个字节(如果小数位是奇数),并且上舍入至整数个字节。
除了具有一项额外的特征外,MONEY 类型与 DECIMAL(p,s) 完全相同。每当数据库服务器将 MONEY 值转换为字符以进行显示时,它将自动包括货币符号。
与 INTEGER 和 FLOAT 相比,DECIMAL(p,s) 的优点是精度可以高得多(最高 32 位,而 INTEGER 是 10 位,FLOAT 是 16 位),并且精度和所需的存储空间都可以调整,以与应用程序相适应。
DECIMAL(p,s) 的缺点是算术运算的效率较低,并且许多编程语言不支持此格式的数字。因此,当程序抽取数字时,它通常必须将该数字转换为另一数字格式才能进行处理。