再問怎麼把一個類型字段的數據轉換成字符串,要求最多要保留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
...全文
149 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
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

34,838

社区成员

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

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