有人能解释一下在下面的sql代码中发生了什么吗?
宣布@股利数字(38,22) 声明@除数数值(38,22) 声明@otherDivisor int 集合@股利=1 set @除数=3 set @otherDivisor =3 选择cast(@股利/@除数为数值(38,22)),@股利/@38,22除数
返回的结果是
0.3333333333333333333333333333333333
我希望这两种计算的结果是相同的。
发布于 2010-12-15 17:51:03
小数(38,22)/小数(38,22)在这些规则之后以小数(x,6)结尾
所以你有0.33333,然后再回到小数点(38,22)
@otherDivisor被转换为(38,0)并保持为十进制(x,22)
见我工作过的示例
发布于 2010-12-15 17:10:02
实际上我收回了那个答案。看起来SQL是在胁迫结果,不管哪个优先级、派息还是除数较高。
select 1.00000000000000000000/3.0
select 1.0/3.0
发布于 2010-12-15 17:13:24
试试这个:
select cast(@dividend as numeric(38,22)) / @divisor, @dividend / @otherDivisor
你是在做除法后选的。
https://stackoverflow.com/questions/4452747
复制相似问题