如何解释数据库中数字的精确性和规模?

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

这个怎么解释呢?

根据在SQL Server Management Studio中查看的列上的属性,我可以看到这意味着:decimal(数字精度,数值范围)。

精度和规模在实质上意味着什么?

将这个解释为一个小数位数,5位数和两位小数,即12345.12

PS我已经能够确定一个同事的正确答案,但很难在网上find答案。 因此,我想在这里提供的问题和答案在stackoverflow供将来参考。

数字精度是指数字中出现的最大数字位数。

即1234567.89的精度为9

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

即123456.789的比例是3

因此,小数(5,2)的最大允许值是999.99

数字的精确度是数字的数量。

一个数字的比例是小数点后面的位数。

在字段定义上设置精度和标度时,通常暗示的是它们代表最大值

例如,用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 |value| < 10^p

SQL Server 2000文档中的精度,比例和长度如下所示:

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