2012-04-19 42 views
0

我有700SQL計算正確的格式不顯示

declare @a decimal(10,0) 
declare @b decimal(10,0) 

set @a = 100 - 2 
set @a = @a/14 
set @a = @a * 100 

set @a = ((100 - 2)/14) * 100 

select @a 

出來下面的SQL查詢什麼,我期待它做的是回到85.714285等等

不太肯定我錯了。

感謝

+0

爲什麼你期望的結果是85.714285? – Marshal 2012-04-19 11:27:47

+0

[BODMAS](http://en.wikipedia.org/wiki/Order_of_operations) – Paddy 2012-04-19 11:33:33

回答

0

700是正確的結果。

請再檢查一次!

((100 - 2)/14) * 100 = 700 

你計算出

100 - 2/14 * 100 = 85,... 

你想用這個SQL查詢。

set @a = 100 - 2.0/14 * 100 
+0

如果你在標準模式下使用Windows計算器,並做100-2/14 * 100它出來700然而,如果你改變它科學它出來在85.714285714285714285714285714286 - 後來就是我想要的結果 – needmorebeerformewallaby 2012-04-19 11:35:28

+0

然後從你的sql查詢中移除'()':'set @a = 100 - 2.0/14 * 100'。並將'.'添加到'2'或'14'。 – 2012-04-19 11:38:41

+0

謝謝尤爾根,這是完美的! – needmorebeerformewallaby 2012-04-19 11:41:43

0

添加1.0到你的最後一行的末尾,因爲如果你使用的所有整數SQL將隱式轉換的結果作爲一個int。

set @a = ((100 - 2)/14) * 100.0 
+0

還給出了相同的答案 – needmorebeerformewallaby 2012-04-19 11:21:27

1

你的聲明是錯誤的:

declare @a decimal(10,0) 
declare @b decimal(10,0) 

你指定的長度,但不是小數位數,這是通過使用第二值來完成。

0

改變你的聲明,包括小數位:

declare @a decimal(10,5) 
declare @b decimal(10,5) 

set @a = 100 - 2 
set @a = @a/14 
set @a = @a * 100 

set @a = ((100 - 2)/14) * 100 

select @a 

由於您的聲明被設置爲10,0那麼你會得到沒有小數位。

,如果你想要的答案是85.714 ......那麼你需要改變你的SQL語句:

declare @a decimal(10,5) 

set @a = 100.0 - 2.0 
set @a = @a/14.0 
set @a = @a * 100.0 

set @a = 100.0 - ((2.0/14.0) * 100.0) 

select @a 

爲了得到你正在尋找的結果你需要添加一個.到其他值( 2,14等),你會得到你想要的值,你還需要確保你的圓括號在正確的位置。

結果 - 85.71430

+0

剛剛返回700.00000 - 我需要它返回85.714285等 – needmorebeerformewallaby 2012-04-19 11:23:50

+1

700是正確的結果((100-2)/14)* 100不等於85.714285 – Taryn 2012-04-19 11:25:10

+0

如果你在標準模式下使用Windows計算器,並做100-2/14 * 100它會在700出來然而如果你改變它科學它出來在85.714285714285714285714285714286 - 後者是我想要的作爲結果。 – needmorebeerformewallaby 2012-04-19 11:29:08