sql cast decimal 转换小数精度的问题

marklr 2016-01-07 02:56:15
我需要转换成保留3位小数,如果最后是0的可以不显示,例如以下我希望输出结果是 12.1

declare @t1 decimal(18,5) set @t1=12.1000
declare @t2 nvarchar(50) set @t2=cast(@t1 as nvarchar(50))

print @t2
...全文
1494 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
Tiger_Zhao 2016-01-07
  • 打赏
  • 举报
回复
你的需求是两个功能:
用ROUND()保留3位小数。
先转换成float来控制格式。
declare @t1 decimal(18,5)
set @t1=12.1001
declare @t2 nvarchar(50)
set @t2=cast(CONVERT(float,ROUND(@t1,3)) as nvarchar(50))

print @t2

12.1

又:显示格式建议让前台来做。
marklr 2016-01-07
  • 打赏
  • 举报
回复
不能直接字符格式化?
中国风 2016-01-07
  • 打赏
  • 举报
回复
declare @t1 decimal(18,5) 
SET @t1=12.1000

SELECT CAST(@t1 AS FLOAT(38))
用浮点可这样的显示

34,576

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧