[++++]小数转换成百分数 取得小数的有效数两位,并转换为百分数。如:1/3=0.333333 1/3000=0.0033333 1/300000=0.0000033333333333结果33%0.33%0.00033% 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 declare @i decimal(10,2)set @i=90select rtrim(cast(@i/3*100 as decimal(10,2))) + '%' to fcuandy -------------------如果我的值是0.000333select rtrim(0.000333 as decimal(10,2))) + '%'/*消息 156,级别 15,状态 10,第 1 行Incorrect syntax near the keyword 'AS'.*/如果值是0.33,0.033,0.0033我想得到值33%,3.3%,0.33% select cast(cast(1.0 * 1/3 * 100 as decimal(18,6)) as varchar) + '%'select cast(cast(1.0 * 1/3000 * 100 as decimal(18,6)) as varchar) + '%'select cast(cast(1.0 * 1/300000 * 100 as decimal(18,6)) as varchar) + '%'/*------------------------------- 33.333300%(所影响的行数为 1 行) ------------------------------- 0.033300%(所影响的行数为 1 行) ------------------------------- 0.000333%(所影响的行数为 1 行)*/ to dawugui ---------------------先谢谢你的回答,结果是正确的,但我还行对小数的有效位进行控制,保留两位小数位的非0位------------------33.333300%0.033300%0.000333%-----------------结果为----------------33%0.033%0.00033% 没有 rtrim ... as的写法。我写的语句你仔细看一下。先将数 * 100 即0.33333*100 得到33.333再用cast 保留两位小数 cast(33.333,decimal(10,2) 得到 33.33再用 rtrim 隐式转换33.33为 varchar型 得到 '33.33', 然后两个varchar数据进行相连 '33.33' + '%' 得到 '33.33%'就是 select rtrim(cast(@yourFloat as decimal(10,2))) + '%' 手误的地方,更正一下.没有 rtrim ... as的写法。我写的语句你仔细看一下。先将数 * 100 即0.33333*100 得到33.333再用cast 保留两位小数 cast(33.333 as decimal(10,2)) 得到 33.33再用 rtrim 隐式转换33.33为 varchar型 得到 '33.33', 然后两个varchar数据进行相连 '33.33' + '%' 得到 '33.33%'就是 select rtrim(cast(@yourFloat * 100 as decimal(10,2))) + '%' 我没有动态实现,只是给固定值最小可以计算1/10000print rtrim(round(cast(1.0*1/10000* 100 as decimal(10,2)),2))+'%'print rtrim(round(cast(1.0*1/100000* 100 as decimal(10,2)),2))+'%'/*0.01%0.00%*/1/100000 溢出希望高手们可以解决一下 sql语句。。 弱问:“每天的12:00 am和5:00 pm对northwind进行日志备份” 怎样才能实现? sql查询 求教 安装SQL Server 2000无响应,向诸位请教 寻求一种较合理的表设计 SQL 2005 版本语言问题 一些入门小问题,烦请解决!谢谢! 请问如何在函数中掉用存储过程?谢谢! 如何用log恢复数据 如何用变量代替查询语句的字段名以及字段的值? 关于条件中null值的问题
set @i=90
select rtrim(cast(@i/3*100 as decimal(10,2))) + '%'
-------------------如果我的值是0.000333
select rtrim(0.000333 as decimal(10,2))) + '%'
/*
消息 156,级别 15,状态 10,第 1 行
Incorrect syntax near the keyword 'AS'.*/如果值是0.33,0.033,0.0033
我想得到值33%,3.3%,0.33%
select cast(cast(1.0 * 1/3000 * 100 as decimal(18,6)) as varchar) + '%'
select cast(cast(1.0 * 1/300000 * 100 as decimal(18,6)) as varchar) + '%'/*
-------------------------------
33.333300%(所影响的行数为 1 行)
-------------------------------
0.033300%(所影响的行数为 1 行)
-------------------------------
0.000333%(所影响的行数为 1 行)
*/
---------------------
先谢谢你的回答,
结果是正确的,
但我还行对小数的有效位进行控制,
保留两位小数位的非0位
------------------
33.333300%
0.033300%0.000333%
-----------------
结果为
----------------
33%
0.033%
0.00033%
我写的语句你仔细看一下。
先将数 * 100 即0.33333*100 得到33.333
再用cast 保留两位小数 cast(33.333,decimal(10,2) 得到 33.33
再用 rtrim 隐式转换33.33为 varchar型 得到 '33.33', 然后两个varchar数据进行相连 '33.33' + '%' 得到 '33.33%'就是
select rtrim(cast(@yourFloat as decimal(10,2))) + '%'
没有 rtrim ... as的写法。
我写的语句你仔细看一下。
先将数 * 100 即0.33333*100 得到33.333
再用cast 保留两位小数 cast(33.333 as decimal(10,2)) 得到 33.33
再用 rtrim 隐式转换33.33为 varchar型 得到 '33.33', 然后两个varchar数据进行相连 '33.33' + '%' 得到 '33.33%'就是
select rtrim(cast(@yourFloat * 100 as decimal(10,2))) + '%'
print rtrim(round(cast(1.0*1/100000* 100 as decimal(10,2)),2))+'%'
/*
0.01%
0.00%*/
1/100000 溢出
希望高手们可以解决一下