取得小数的有效数两位,并转换为百分数。如:1/3=0.333333
   1/3000=0.0033333
    1/300000=0.0000033333333333结果
33%
0.33%
0.00033%

解决方案 »

  1.   

    declare @i decimal(10,2)
    set @i=90
    select rtrim(cast(@i/3*100 as decimal(10,2))) + '%'
      

  2.   

    to fcuandy 
    -------------------如果我的值是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%
      

  3.   

    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 行)
    */
      

  4.   

    to  dawugui  
    ---------------------
    先谢谢你的回答,
    结果是正确的,
    但我还行对小数的有效位进行控制,
    保留两位小数位的非0位
    ------------------
    33.333300%
    0.033300%0.000333%
    -----------------
    结果为
    ----------------
    33%
    0.033%
    0.00033%
      

  5.   

    没有 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))) + '%'
      

  6.   

    手误的地方,更正一下.
    没有 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))) + '%'
      

  7.   

    我没有动态实现,只是给固定值最小可以计算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 溢出
    希望高手们可以解决一下