1

我想显示一个带有 3 位分隔符的数字,并同时显示小数点后的 5 位数字。

declare @test float
set @test = 7265342.1234 
select convert(varchar(20),cast(@test as money),1)

只返回 7,265,342.12

4

1 回答 1

0

由于您想获取精确格式的数字(小数点后 5 位),您应该使用十进制数据类型来存储数字。浮点数是一种近似数据类型。当需要像上面这样的精确数字行为时,您不应该使用此数据类型。此外,将十进制值转换为 MONEY 或 SMALLMONEY 也无济于事,因为这些数据类型仅支持最多 4 位小数的精度。以下查询将解决您的要求:

declare @test decimal(38,5)
set @test = 7265342.1234 

DECLARE @CharIndex int = charindex('.', @test)
select replace(convert (varchar(33),cast(LEFT(@test,@CharIndex)as money),1),'.00', '')
+'.' + RIGHT(@test,len(@test) - @CharIndex);

希望这可以帮助!!!

于 2013-10-08T10:32:46.133 回答