我在数据库中指定了以下列:decimal(5,2)
如何解释这一点?
根据 SQL Server Management studio 中查看的列属性,我可以看到它的含义:小数(数字精度,数字小数位数)。
精度和规模的实际含义是什么?
很容易将其解释为具有 5 位数字和两位小数的小数......即 12345.12
附注我已经能够从一位同事那里确定正确的答案,但在网上找到答案却遇到了很大的困难。因此,我希望将问题和答案记录在 stackoverflow 上以供将来参考。
数字精度是指数字中存在的最大位数。
即 1234567.89 的精度为 9
数字刻度是指最大小数位数
即 123456.789 的标度为 3
因此,decimal(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
...
精度、比例和长度内容如下:
精度是数字中的位数。小数位数是数字中小数点右侧的位数。例如,数字 123.45 的精度为 5,小数位数为 2。
精度是指总位数,小数位数是指小数点后允许的位数。 引用的示例的精度为 7,小数位数为 2。
此外,DECIMAL(精度,小数位数)是一种精确值数据类型,与存储近似数值数据的 FLOAT(精度,小数位数)等类型不同。 例如,定义为 FLOAT(7,4) 的列显示为 -999.9999。 MySQL 在存储值时会进行舍入,因此如果将 999.00009 插入 FLOAT(7,4) 列,则近似结果为 999.0001。
如果有帮助请告诉我!
在 ms Sql 服务器中,我的类型为十进制 10.8,为什么我不能指定大于 99.9 的值,例如 100.0
出现错误:
算术溢出
对于十进制类型 10.4,我可以指定数字 999999.0 你能给我解释一下为什么会这样吗?