为什么sql server为1/2返回0?

Gui*_*doG -2 sql sql-server

在sql server中,当我选择1/2时,它返回0而不是0.5
为什么?

不应该所有分区都返回小数值吗?我可以设置一个设置让它正常划分吗?

我在c#中注意到了同样的
事情背后的逻辑是什么?

Luk*_*zda 5

整数除法

select 1 / 2  
-- 0
Run Code Online (Sandbox Code Playgroud)

浮点除法(至少有一个参数必须是浮点数/小数):

select 1 / 2.0
-- 0.5

select 1.0 / 2
-- 0.5

select 1.0 / 2.0
-- 0.5
Run Code Online (Sandbox Code Playgroud)

Divide

如果整数被除数除以整数除数,则结果是一个整数,其截断结果的任何小数部分.

编辑:

关键是你问为什么?Becasue语言的创造者决定如此,历史,惯例.

我建议读数是在数学中唯一定义的整数除法吗?.

请记住,在某些语言中,您有2个除法运算符(一个用于整数除法,一个用于实际除法).

Division Integer

在计算机程序中划分整数需要特别小心.某些编程语言(如C)会像上面的情况5那样处理整数除法,因此答案是整数.其他语言,如MATLAB和每个计算机代数系统都返回一个有理数作为答案,如上面的情况3.这些语言还提供了直接或从案例3的结果中获取其他案例结果的函数.

用于整数除法的名称和符号包括div,/,\和%.当被除数或除数为负时,关于整数除法的定义不同:舍入可以朝向零(所谓的T-除法)或朝向-∞(F-除); 可能会出现更罕见的样式 - 请参阅Modulo操作以获取详细信息.


对于downvoters留下评论,所以我可以回复/改善我的答案.