我的数据类型为Numeric(28,10)(例如128000,0000000000)。我想将它舍入到2个重要性并将其转换为字符串。这有什么问题?
convert(varchar,round(isnull(td2.Qty,0),2))
其中td2.Qty是该值。它将它转换为字符串,但不会将其舍入。提前致谢
答案 0 :(得分:1)
它会循环显示,但它会一直显示零,因为这是numeric
始终显示的方式。
如果您需要停止显示零,请在舍入后将值转换为其他类型,例如float
或numeric(28,2)
:
convert(varchar, cast(round(isnull(td2.Qty,0),2) as numeric(28,2)))
答案 1 :(得分:0)
SELECT CAST(round(isnull(128000,0000000000),2)AS FLOAT)
SELECT CAST(round(isnull(128000,0000000000),2)AS NUMERIC(28,2))
答案 2 :(得分:0)
让我解释在SQL中使用 ROUND()函数。它不会返回给定长度的十进制值。例如。 round(isnull(td2.Qty,0),2)不会返回摩擦值长度 2 ,而是
(例如128000.0000000000)至(例如128000.00)
而不是
(例如128000.12340000000)至(例如128000.120000000000)。
仅在十进制2值后返回并保持全为“0”。在您的情况下,您希望ROUND截断。所以你可以使用
施放(圆形(isnull(td2.Qty,0),2)为十进制(18,2));