首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >乘法除法的顺序优先

乘法除法的顺序优先
EN

Stack Overflow用户
提问于 2013-11-28 10:18:15
回答 2查看 607关注 0票数 7
代码语言:javascript
复制
SELECT -1 * 100 / 10
SELECT 100 * -1 / 10

结果不同。第一个返回-10,第二个返回0。很明显这是命令造成的。

但我找不到任何信息表明除法的权重大于乘法。

http://technet.microsoft.com/en-gb/library/ms190276%28v=sql.105%29.aspx乘法和除法是在同一个层次上,阅读它是写的

当表达式中的两个运算符具有相同的运算符优先级级别时,将根据它们在表达式中的位置从左到右计算它们。

关于这一点,第二个查询应该这样计算:100 * -1 -> result / 10,不是吗?

EN

回答 2

Stack Overflow用户

发布于 2013-11-28 13:51:45

这要么是文档中的“缺陷”,要么是Server本身中的“缺陷”:根据您的链接,负运算符-的运算符优先级低于乘法和除法,但它对计算顺序有影响。您可以看到这一点,因为您只使用int值,以便-1/10生成0。如果你使用浮点算法,一切都会好的:

代码语言:javascript
复制
SELECT -1 * 100 / 10.0
SELECT 100 * -1 / 10.0

或者可以使用变量“隐藏”否定:

代码语言:javascript
复制
DECLARE @a int
DECLARE @b int
DECLARE @c int

SELECT @a=-1, @b=100, @c=10

SELECT @a*@b/@c
SELECT @b*@a/@c

和往常一样,对于复算术(复数意味着不止一个操作符),您可以使用括号来强制执行一定的计算顺序,就像@Mack在他的回答中提到的。

票数 1
EN

Stack Overflow用户

发布于 2017-10-03 15:11:15

select 100 *-Cast(1 as float)/Cast(10 as float)

您需要将字段转换为十进制或浮点数,甚至是数字。

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

https://stackoverflow.com/questions/20263318

复制
相关文章

相似问题

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