一尘不染

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

sql

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

并非所有的除法都返回一个十进制值?我可以设置使其划分为正常的设置吗?

我在c#中注意到了同样的道理,
这背后的逻辑是什么?


阅读 231

收藏
2021-03-17

共1个答案

一尘不染

整数除法

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操作。


对于拒绝投票的人,请发表评论,以便我回复/改进我的答案。

2021-03-17