如何解释数据库中数字的精确性和规模?
我在数据库中指定了以下列: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=5
和scale=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。