我對數據類型Numeric(28,10)(例如128000,0000000000)有一些價值。我想將它舍入到2個含義並將其轉換爲字符串。這有什麼問題?舍入和轉換值
convert(varchar,round(isnull(td2.Qty,0),2))
其中td2.Qty是該值。它將它轉換爲字符串,但不會繞過它。在此先感謝
我對數據類型Numeric(28,10)(例如128000,0000000000)有一些價值。我想將它舍入到2個含義並將其轉換爲字符串。這有什麼問題?舍入和轉換值
convert(varchar,round(isnull(td2.Qty,0),2))
其中td2.Qty是該值。它將它轉換爲字符串,但不會繞過它。在此先感謝
它確實回合,但它始終顯示零,因爲這總是顯示如何numeric
s。
如果您需要停止顯示零,請在舍入後將值轉換爲其他類型,例如, float
或numeric(28,2)
:
convert(varchar, cast(round(isnull(td2.Qty,0),2) as numeric(28,2)))
SELECT CAST(round(isnull(128000,0000000000),2)AS FLOAT)
SELECT CAST(round(isnull(128000,0000000000),2)AS NUMERIC(28,2))
讓我解釋一下使用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));
不知道。謝謝 –