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

我在数据库中指定了以下列:

如何解释这一点呢?

根据在SQL Server Management studio中查看的列上的属性,我可以看到它的意思是:十进制(数字精度,数字比例)。

精确和规模在现实中意味着什么?

这很容易理解为一个有5位小数和两位小数的小数……ie 12345.12

附注:我可以从一位同事那里确定正确答案,但在网上找到答案非常困难。因此,我希望将问题和答案记录在stackoverflow上,以供将来参考。

354261 次浏览

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

Ie 1234567.89的精度为9

数字刻度是指小数点后的最大位数

Ie 123456.789的刻度为3

因此十进制(5,2)的最大值是999.99

SQL Server 2000文档中的精度、规模和长度如下:

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

数字的精度是指数字的位数。

数字的刻度是指小数点后的位数。

在字段定义上设置精度和比例时,通常暗示它们表示最大值。

例如,用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

精度是指小数的总位数,比例是指小数后允许的位数。 引用的例子精度为7,比例为2。

此外,DECIMAL(精度,比例)是一种精确值数据类型,不像FLOAT(精度,比例)这样存储近似数值数据的类型。 例如,定义为FLOAT(7,4)的列显示为-999.9999。MySQL在存储值时执行舍入,因此如果将999.00009插入FLOAT(7,4)列,近似结果为999.0001.

如果有帮助,请告诉我!