2015-04-01 36 views
1

我跑在SQL Server 2012中SQL Server 2012的整數除法小數位數

SELECT CONVERT(DECIMAL(7,2),4)/CONVERT(DECIMAL (7,2),3)

下,得到了以下幾點。

1.3333333333

我相信DECIMAL對待7精密和2的規模,所以我不應該得到的結果爲2位小數?

回答

1

您還需要將結果轉換爲DECIMAL(7,2)。例如:

SELECT CONVERT(DECIMAL(7,2), CONVERT(DECIMAL(7,2),4)/CONVERT(DECIMAL (7,2),3)) 

這會給你:

1.33 
1

MSDN,當你把e1/e2這是decimal(p1, s1)decimal(p2, s2)

導致精度 p1 - s1 + s2 + max(6, s1 + p2 + 1)
導致規模 max(6, s1 + p2 + 1)

所以,你得到的精度7 - 2 + 2 + max(6, 2 + 2 + 1) = 13
和規模max(6, 2 + 7 + 1) = 10

decimal(13, 10)

結果的原因是,你會失去準確性,如果你不擴大,精度和範圍取決於操作數:看.5/2 = .25並與.5/20 = 0.025進行比較。如果您使用money類型,您可能遲早會遇到這種情況,因爲它具有固定的四位數字「比例」。例如:https://stackoverflow.com/a/582819/155892

https://msdn.microsoft.com/en-us/library/ms190476.aspx