SQLserver 小数保留两位有效数字

我sql中Cast(round(((MBBB.{0}-YBB.{0})/YBB.{0})*100,2) as nvarchar(20))+'%'
最后得到的是 0.00000000000%,没有得到0.00%格式,请大神指教

    这个是你的语句:SELECT Cast(round((0.99999999)*100,2) as nvarchar(20))+'%'

    首先把数字定义为保留两位小数:SELECT CAST( 0.99999999*100 AS DECIMAL(18,2))

    再把数字转换为文本 加上百分号:SELECT cast (CAST( 0.99999999*100 AS DECIMAL(18,2))  AS NVARCHAR(20)) +'%'

DecimalFormat df = new DecimalFormat("#.00");
System.out.println(df.format(f));

乘以1000000000

select round(column1,2) column1 from tablename

  1. 使用 Round() 函数,如 Round(@num,2) 参数 2 表示 保留两位有效数字。
  2. 更好的方法是使用 Convert(decimal(18,2),@num) 实现转换,decimal(18,2) 指定要保留的有效数字。 这两个方法有一点不同:使用 Round() 函数,如果 @num 是常数,如 Round(2.3344,2) 则 会在把有效数字后面的 变为0 ,成 2.3300。但 Convert() 函数就不会。

SELECT CAST(CAST(0.12345678*100 AS DECIMAL(18,2)) AS varchar) +'%'
结果是12.35%

经过测试:
select Convert(decimal(18,2),2.176544) 结果:2.18
图片说明