SELECT(1663356.000000000000000/133920.000000)
它给出如下输出:12.4205197132616487455197132
但是当我使用精度为(38,15)的Temp表执行相同的操作时,输出值比例仅为9。我不知道为什么会这样吗?
示例:
create table #Temp
(
a numeric(38,15),
b numeric(22,6)
)
insert into #BASELINE values (1663356.000000000000000,133920.000000)
select a/b from #BASELINE
我得到的输出如下:12.420519713
答案 0 :(得分:0)
所以我认为计算是这样的:
p1 = 38
s1 = 15
p2 = 22
s2 = 6
result precision = 38 - 15 + 6 + MAX(6, 15 + 22 + 1) = 67
result scale = MAX(6, 15 + 22 + 1) = 38
但是此规则开始了:“结果精度和小数位数的绝对最大值为38。当结果精度大于38时,将减小相应的小数位数,以防止结果的整数部分被截断。”
因此,“真实”比例为38 - (67 - 38) = 9
,与您的发现相符。