为什么当我这样做时:
select CAST(1 AS DECIMAL(38, 28))/CAST(1625625 AS DECIMAL(38, 28))
我得到 0 吗,但是当我得到 0 时
select CAST(1 AS DECIMAL(20, 10))/CAST(1625625 AS DECIMAL(20, 10))
我得到一个值?
我本来期望更高精度的除法会返回更高精度的结果,为什么情况并非如此?
发生这种情况是因为对于数学运算,结果精度和小数位数是根据以下规则计算的:http://msdn.microsoft.com/en-us/library/ms190476.aspx#division http://msdn.microsoft.com/en-us/library/ms190476.aspx#division
手术
e1 / e2
结果精度
p1 - s1 + s2 + 最大值(6, s1 + p2 + 1)
结果量表
最大值(6, s1 + p2 + 1)
所以使用时decimal(38/28)
对于这两个部分然后你结束decimal(105,67)
不受支持,因此会被截断。
还引用
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)