0

这是我正在运行的查询

Select (100/18)*18

我得到的答案是 90。我已经尝试将每个数字也声明为小数,并且我得到了值100.0008,但是当我用变量作为浮点数进行计算时,答案在“100”处是正确的,所以有人知道为什么 SQL 计算像这样?

4

4 回答 4

7

因为它会首先取消括号

所以

Select (100/18)*18

will (100/18) = 5.555555 但它假设两个数字都是 int 所以它将结果转换为 int 所以它会返回 5

所以现在5*18 = 90

如果您想要正确的结果,请改为执行此操作Select (100*18)/18

于 2012-10-30T12:42:16.720 回答
2

为了得到想要的结果,你应该尝试这样的事情:

Select CEILING((100/18.0)*18)

当你这样做时,

Select (100/18)*18

sql server 将运算视为整数除法,并将 select 100/18 as 5 instaed of 5.55555....

于 2012-10-30T12:52:30.807 回答
1

尝试表达 numders ac 十进制数

SELECT (100.0/18)*18

SELECT ROUND((100.0/18)*18,2)

...

于 2012-10-30T12:51:41.447 回答
0

你可以试试这个

select abs(18*100/18)
于 2012-10-30T12:42:53.367 回答