2010-09-29 114 views
2

我有兩個SQL查詢都返回SQL查詢結果問題

選擇圓(轉換(浮動, '24367.723'),2)

結果:24367.72

二:

select convert(varchar(20),round(convert(float,'24367.723'),2))

結果:24367.7

爲什麼第二次查詢返回排除轉換後的最後一位數字爲varchar

由於提前

回答

3

如果不指定樣式參數的轉換功能你會得到默認的樣式(0)。

即,它是等效於做

select convert(varchar(20),round(convert(float,'24367.723'),2), 0)  

default style for converting from float to varchar顯示最大爲6個數字。

0

使用浮點數時,STR()函數通常會根據MSDN給出更好的結果,因爲您有更多的控制權。

E.g.

select str(convert(float,'24367.723'),8, 2) 
0

不要使用浮動,使用確切的數字。像這樣的東西

convert(varchar(20), convert(numeric(20,2), '24367.72'))