SQL Server 2000整数截断

时间:2011-01-12 18:22:07

标签: sql sql-server-2000

简单明了,有谁知道为什么:

Select 30 * 220 / 30

返回 220 ,这是正确的结果,并且:

Select 30 * (220/30)

返回 210 ???

在第二种情况下,我意识到首先计算220/30,生成小数(7,333333 ...)但仍然......这不是很糟糕吗?

2 个答案:

答案 0 :(得分:4)

在整数除法220/30 = 799/100 = 0下(注意截断不舍入)

使用非整数来避免这种情况。例如Select 30 * (220/30.0)

或者您可以使用明确的cast

Select 30 * (220/cast (30 as float))

答案 1 :(得分:1)

括号中的那个总是首先被评估,但是由于你使用整数的机器逻辑,在这种情况下,除法的结果是7,你乘以30,给你210