• 主页
  • 基础类
  • 应用实例
  • 新技术前沿

再問怎麼把一個類型字段的數據轉換成字符串,要求最多要保留6位小數,如果沒有6位小數的不需要0零填充,謝謝!!!

laker_tmj 2004-12-24 10:49:08

再問怎麼把一個類型字段的數據轉換成字符串
要求最多要保留6位小數,如果沒有6位小數的不需要0零填充,謝謝!!!


0.10500000000000001 0.105
0.22900000000000001 0.229
0.0528 0.0528
9.7999999999999997E-3 0.009
0.0276 0.0276
19.731406689 19.731407
6.9000000000000006E-2 0.07
...全文
89 点赞 收藏 5
写回复
5 条回复
dulei115 2004年12月28日
刚刚测试了一下,发现是存在这个问题,
cast(round(6.9999999999999994E-5, 6) as float)
这样的方法,对0.00...这样的数,当紧接小数点后面的0的个数>=4是就会以科学计数法显示,我看你还是写函数吧,
首先转换为numeric(20, 6),再转换为字符,然后去掉尾部的0
create formatfloat(@num float)
returns varchar(50)
as
begin
declare @s varchar(50)
set @s = cast(cast(round(@num, 6) as numeric(20, 6)) as varchar(50))
while charindex('0', @s, len(@s)) = len(@s)
set @s = left(@s, len(@s) - 1)
return @s
end
回复 点赞
laker_tmj 2004年12月28日
to dulei115() 以下語句不行,

SELECT cast(cast(round(6.9999999999999994E-5, 6) as float) as varchar(20))

SELECT cast(cast(round(6.9999999999999994E-5, 6) as real) as varchar(20))
回复 点赞
dulei115 2004年12月24日
或者
cast(cast(round(9.7999999999999997E-3, 6) as real) as varchar(20))


cast(round(9.7999999999999997E-3, 6) as real)

cast(round(9.7999999999999997E-3, 6) as float)
回复 点赞
dulei115 2004年12月24日
cast(cast(round(9.7999999999999997E-3, 6) as float) as varchar(20))
回复 点赞
laker_tmj 2004年12月24日
up
回复 点赞
发动态
发帖子
MS-SQL Server
创建于2007-09-28

1.4w+

社区成员

25.3w+

社区内容

MS-SQL Server相关内容讨论专区
社区公告
暂无公告