declare @v nvarchar(50) = '21.89777777777777777777777777'
select convert(decimal(18,8),round(@v,3))
舍入后无法截断小数值。例如,在上面的问题中,它返回21.8980000。
The resulting output must be like
21.898 when rounded by select convert(decimal(18,8),round(@v,3))
and 21.8988 when rounded by round(@v,4)
我创建了一个存储过程,从中我得到了舍入值。它必须在四舍五入后修剪前导零。它必须是动态的,而不是每次都改变精度
答案 0 :(得分:1)
对decimal
declare @v nvarchar(50) = '21.89777777777777777777777777'
select convert(decimal(18,3),round(@v,3))
答案 1 :(得分:0)
值是相同的,无论它是21.8980000
还是21.898
。 格式与众不同。
您应该在客户端上格式化值,而不是在SQL Server上格式化。
答案 2 :(得分:0)
Float将完成你的工作
declare @v nvarchar(50) = '21.89777777777777777777777777'
select convert(float,round(@v,3))