這裏是我運行SQL Server 2008中計算錯誤
Select (100/18)*18
查詢答案我得到的是90.我試圖聲明的每一個號碼爲也小數,和我得到的值100.0008
,但是當我用變量作爲浮點數計算答案在'100'是正確的,所以任何人都不知道SQL爲什麼會這樣計算?
這裏是我運行SQL Server 2008中計算錯誤
Select (100/18)*18
查詢答案我得到的是90.我試圖聲明的每一個號碼爲也小數,和我得到的值100.0008
,但是當我用變量作爲浮點數計算答案在'100'是正確的,所以任何人都不知道SQL爲什麼會這樣計算?
,因爲它首先evelute的paranthesis
所以
Select (100/18)*18
會(一十八分之一百)= 5.555555,但假設這兩個數爲INT所以它會施放結果爲INT所以它會返回5
所以現在5*18 = 90
如果你想正確的結果做到這一點,而不是Select (100*18)/18
試圖表達的numders交流十進制數
SELECT (100.0/18)*18
和
SELECT ROUND((100.0/18)*18,2)
...
,以獲得期望的結果你應該嘗試這樣的事情:
Select CEILING((100/18.0)*18)
當你做到這一點
,
Select (100/18)*18
的SQL Server考慮操作整數除法,並採取選擇十八分之百5 instaed 5.55555的....
[運算符優先級(HTTP ://msdn.microsoft.com/en-us/library/ms190276.aspx)永遠不要以爲RDBMS有bug。 – JeffO