0
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)

ラウンド値を取得するストアド プロシージャを作成しました。また、丸めた後に先頭のゼロを削除する必要があります。毎回精度を変更するのではなく、動的でなければなりません

4

3 に答える 3

0

21.8980000またはに関係なく、値は同じ21.898です。違うのはフォーマットです。

SQL Server ではなく、クライアントで値をフォーマットする必要があります。

于 2013-11-15T10:23:28.940 に答える
0

フロートがあなたの仕事をします

declare @v nvarchar(50) = '21.89777777777777777777777777'
select convert(float,round(@v,3))
于 2013-11-15T10:28:38.610 に答える