首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用除法运算符时不理解sql server中的舍入行为

使用除法运算符时不理解sql server中的舍入行为
EN

Stack Overflow用户
提问于 2010-12-15 17:08:12
回答 3查看 1.5K关注 0票数 1

有人能解释一下在下面的sql代码中发生了什么吗?

宣布@股利数字(38,22) 声明@除数数值(38,22) 声明@otherDivisor int 集合@股利=1 set @除数=3 set @otherDivisor =3 选择cast(@股利/@除数为数值(38,22)),@股利/@38,22除数

返回的结果是

0.3333333333333333333333333333333333

我希望这两种计算的结果是相同的。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-12-15 17:51:03

小数(38,22)/小数(38,22)在这些规则之后以小数(x,6)结尾

所以你有0.33333,然后再回到小数点(38,22)

@otherDivisor被转换为(38,0)并保持为十进制(x,22)

见我工作过的示例

票数 0
EN

Stack Overflow用户

发布于 2010-12-15 17:10:02

实际上我收回了那个答案。看起来SQL是在胁迫结果,不管哪个优先级、派息还是除数较高。

代码语言:javascript
运行
复制
      select 1.00000000000000000000/3.0
      select 1.0/3.0
票数 0
EN

Stack Overflow用户

发布于 2010-12-15 17:13:24

试试这个:

代码语言:javascript
运行
复制
select cast(@dividend as numeric(38,22)) / @divisor, @dividend / @otherDivisor

你是在做除法后选的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4452747

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档