你知道为什么sql在乘法时会增加一个额外的精度吗?例子:
declare @x decimal(2,1) = 9.9;
Declare @y decimal(3,2) = 9.99;
--precision: p1 + p2 + 1 = 2 + 3 + 1 = 6
--scale: s1 + s2 = 1 + 2 = 3
declare @rM decimal(5,3) = @x * @y;--this is OK, why is the resulting precision 6 if 5 is OK?
有没有一个我不知道的场景,两个值相乘的精度需要6?
1条答案
按热度按时间bihw5rsg1#
SQLServer提供了有关各种算术运算的数值精度和小数位数的详细文档。
对于乘法,这是:
我认为这些都符合算术的规则。小数点右边的小数位确实是
s1 + s2
--记住,比例是右边的数字。我认为精度可能被夸大了1。但是,在某些情况下,额外的小数位可能会有所帮助。当然,对于数字/十进制值,这些值的上限是最大刻度和精度。