在sql server中,当我选择1/2时,它返回0而不是0.5, 这是为什么呢?
并非所有的除法都返回一个十进制值?我可以设置使其划分为正常的设置吗?
我在c#中注意到了同样的道理, 这背后的逻辑是什么?
整数除法
select 1 / 2 -- 0
浮点除法(至少一个参数必须为浮点数/小数):
select 1 / 2.0 -- 0.5 select 1.0 / 2 -- 0.5 select 1.0 / 2.0 -- 0.5
Divide
如果将整数除数除以整数除数,则结果是整数,其结果的任何小数部分都会被截断。
编辑:
问题是你问为什么?因此,语言的创造者决定了历史,惯例。
我建议阅读 数学中整数除法是否是唯一定义的? 。
请记住,在某些语言中,您有2个除法运算符(一个用于整数除法,一个用于实数除法)。
除法整数
在计算机程序中除整数需要特别注意 。某些编程语言(例如C)像上面情况5那样对待整数除法,因此答案是整数。其他语言,例如MATLAB和每个计算机代数系统,都会返回一个有理数作为答案,如上述情况3所示。这些语言还提供了直接或从案例3的结果中获取其他案例的结果的功能。 用于整数除法的名称和符号包括div,/,\和%。当被除数或除数为负时,整数除法的定义也不同:四舍五入可以取为零(所谓的T除法)或取为鈭掆垶(取F除法);取整可以取整。可能会出现罕见的样式- 有关详细信息,请参见Modulo操作。
在计算机程序中除整数需要特别注意 。某些编程语言(例如C)像上面情况5那样对待整数除法,因此答案是整数。其他语言,例如MATLAB和每个计算机代数系统,都会返回一个有理数作为答案,如上述情况3所示。这些语言还提供了直接或从案例3的结果中获取其他案例的结果的功能。
用于整数除法的名称和符号包括div,/,\和%。当被除数或除数为负时,整数除法的定义也不同:四舍五入可以取为零(所谓的T除法)或取为鈭掆垶(取F除法);取整可以取整。可能会出现罕见的样式- 有关详细信息,请参见Modulo操作。
对于拒绝投票的人,请发表评论,以便我回复/改进我的答案。