在sql server中,当我选择1/2时,它返回0而不是0.5
为什么会这样?为什么sql server在1/2时返回0?
不是所有的分区都返回一个十进制值吗? 我可以设置一个设置来使它正常分开吗?
我注意到c#中的一样#
这是什么逻辑?
在sql server中,当我选择1/2时,它返回0而不是0.5
为什么会这样?为什么sql server在1/2时返回0?
不是所有的分区都返回一个十进制值吗? 我可以设置一个设置来使它正常分开吗?
我注意到c#中的一样#
这是什么逻辑?
整数除法
select 1/2
-- 0
浮法分裂(至少有一个参数必须是浮/十进制):
select 1/2.0
-- 0.5
select 1.0/2
-- 0.5
select 1.0/2.0
-- 0.5
如果整数被除数是除以整数除数,结果是 一个整数,其结果的任何小数部分被截断。
编辑:
的一点是,你问为什么? 如此决定的语言的创造者,历史,惯例。
我建议读Is integer division uniquely defined in mathematics?。
请记住,在某些语言中,您有2个除法运算符(一个用于整数除法和一个用于实际除法)。
在计算机程序除以整数需要特别注意。一些 等编程语言(如C)将上面的情况视为5 ,因此答案是整数。其他语言,如MATLAB 和每个计算机代数系统返回一个有理数作为 答案,如上面的情况3。这些语言也提供函数 得到的其它情况下的结果,箱子或者直接或者从结果 3.
名称和用于整数除法符号包括DIV,/,\和%。 定义有所不同关于整数除法当被除数或 除数为负:舍入可以是朝向零(所谓 T-划分),或者朝向-∞(F-司);更罕见的样式可能发生 - 详情请参阅 模数操作。
截断。整数划分。 –
如果两个参数都是整数而不是返回整数,则至少有一个参数必须是浮点型返回浮点型值。 –
“是否有可以设置使其正常分割的设置” - define * normal *。结果应该是“浮动”吗?或“十进制”?在不同的上下文中,要么是有意义的(就像'int',这是他们目前所做的)。 –