提问



我在数据库中指定了以下列:decimal(5,2)


怎么解释这个?


根据SQL Server Management Studio中查看的列上的属性,我可以看到它表示:decimal(数字精度,数字刻度)。


精确度和规模在实际意义上是什么意思?


很容易将其解释为带有5位数和2位小数位的十进制数...即12345.12


附:我已经能够从同事那里确定正确的答案,但很难在网上找到答案。因此,我希望在stackoverflow上记录问题和答案,以备将来参考。

最佳参考


数字精度是指数字中存在的最大位数。


即1234567.89的精度为9


数字刻度是指最大小数位数


即123456.789的评分为3


因此,十进制(5,2)的最大允许值为999.99

其它参考1


数字的精度是位数。


数字的比例是小数点后的位数。


在字段定义上设置精度和比例时通常隐含的是它们代表最大值。


例如,使用precision=5scale=2定义的十进制字段将允许以下值:



  • 123.45(p=5,s=2)

  • 12.34(p=4,s=2)

  • 12345(p=5,s=0)

  • 123.4(p=4,s=1)

  • 0(p=0,s=0)



不允许使用以下值或导致数据丢失:



  • 12.345(p=5,s=3)=>可以截断为12.35(p=4,s=2)

  • 1234.56(p=6,s=2)=>可以截断为1234.6(p=5,s=1)

  • 123.456(p=6,s=3)=>可以截断为123.46(p=5,s=2)

  • 123450(p=6,s=0)=>超出范围



请注意,范围通常由精度定义:|value| < 10^p ...

其它参考2


SQL Server 2000文档中的精度,比例和长度为:[16]



  精度是数字中的位数。比例是数字中小数点右边的位数。例如,数字123.45的精度为5,标度为2。