舍入和转换价值

时间:2014-05-07 06:35:31

标签: sql sql-server sql-server-2008

我的数据类型为Numeric(28,10)(例如128000,0000000000)。我想将它舍入到2个重要性并将其转换为字符串。这有什么问题?

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

其中td2.Qty是该值。它将它转换为字符串,但不会将其舍入。提前致谢

3 个答案:

答案 0 :(得分:1)

它会循环显示,但它会一直显示零,因为这是numeric始终显示的方式。

如果您需要停止显示零,请在舍入后将值转换为其他类型,例如floatnumeric(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));