我在数据库中指定了以下列:decimal(5,2)
如何理解这一点?
根据SQL Server Management Studio中查看的列上的属性,我可以看到它表示:decimal(数字精度,数字刻度)。
精确度和尺度在实际意义上是什么意思?
很容易将其解释为带有5位数和2位小数位的小数......即12345.12
P.S。我已经能够从同事那里确定正确的答案,但很难在网上找到答案。因此,我想在stackoverflow上记录问题和答案以供将来参考。
答案 0 :(得分:348)
数字精度是指数字中存在的最大位数。
即1234567.89的精度为9
数字刻度是指最大小数位数
即123456.789的等级为3
因此,十进制(5,2)的最大允许值为999.99
答案 1 :(得分:74)
数字的精确度是位数。
数字的比例是小数点后的位数。
在字段定义上设置精度和比例时通常隐含的是它们代表最大值。
示例,使用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)=&gt;超出范围请注意,范围通常由精度定义:|value| < 10^p
...
答案 2 :(得分:21)
Precision, Scale, and Length读取:
精确度是数字中的位数。 Scale是数字中小数点右边的位数。例如,数字123.45的精度为5,标度为2。