2014-05-07 56 views
0

我對數據類型Numeric(28,10)(例如128000,0000000000)有一些價值。我想將它舍入到2個含義並將其轉換爲字符串。這有什麼問題?舍入和轉換值

convert(varchar,round(isnull(td2.Qty,0),2)) 

其中td2.Qty是該值。它將它轉換爲字符串,但不會繞過它。在此先感謝

回答

1

它確實回合,但它始終顯示零,因爲這總是顯示如何numeric s。

如果您需要停止顯示零,請在舍入後將值轉換爲其他類型,例如, floatnumeric(28,2)

convert(varchar, cast(round(isnull(td2.Qty,0),2) as numeric(28,2))) 
+0

不知道。謝謝 –

0
SELECT CAST(round(isnull(128000,0000000000),2)AS FLOAT) 
SELECT CAST(round(isnull(128000,0000000000),2)AS NUMERIC(28,2)) 
0

讓我解釋一下使用ROUND()在SQL功能。它不會返回給定長度的小數值。例如。 輪(ISNULL(td2.Qty,0),2)不會返回摩擦值長度,而是

(例如128000.0000000000)至(例如128000.00)

代替

(例如128000.12340000000)到(例如128000.120000000000)。

它只在小數點後2位返回值並保持全部爲'0'。在你的情況下,你需要ROUND截斷。所以你可以使用

演員陣容(圓(isnull(td2.Qty,0),2)爲十進制(18,2));