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

如何解释这一点呢?

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

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

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

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


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

Ie 1234567.89的精度为9

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

Ie 123456.789的刻度为3

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


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

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


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

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

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

例如,定义精度为5,比例为2的十进制字段将允许以下值:

123.45 (p = 5, s = 2)。 12.34 s = 2), (p = 4 12345 (p = 5, s = 0) 123.4 (p = 4, s = 1) 组(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) =>超出范围

注意,范围通常由精度定义:|值| < 10^p…


精度是指总位数,刻度是指小数点后允许的位数。 文中引用的示例的精度为7,刻度为2。

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

如果有帮助,请告诉我!