declare 
@v1 decimal(28,10),
@v2 decimal(28,10),
@v3 decimal(28,10),
@v4 decimal(28,10),
@v5 decimal(28,10)
select 
 @v1 = 25581,
 @v2 = 0.9,
 @v3 = 0,
 @v4 = 110901.352768
print (@v1 / @v2 - @v3) / @v4
--结果:25.629300
select @v5 = (@v1 / @v2 - @v3) / @v4 * 100
print @v5
--结果:25.6293000000
--使用变量带入公式,结果不够精确
select @v5 = (25581 / 0.9 - 0) / 110901.352768 * 100
print @v5
--结果:25.6293837934
--而直接使用数字,结果确很精确!
问题:如何select @v5 = (@v1 / @v2 - @v3) / @v4 * 100结果精确到小数位10位?

解决方案 »

  1.   

    select 
      @v1 = 25581.0000000000,
      @v2 = 0.9000000000,
      @v3 = 0.000000000,
      @v4 = 110901.352768000试试
      

  2.   

    @v4  定义float 即可。
      

  3.   

    declare 
    @v1 decimal(28,10),
    @v2 decimal(28,10),
    @v3 decimal(28,10),
    @v4 decimal(28,10),
    @v5 decimal(28,10)
    select 
     @v1 = 25581,
     @v2 = 0.9,
     @v3 = 0,
     @v4 = 110901.352768
    --print (@v1 / @v2 - @v3) / @v4
    --结果:25.629300
    select @v5 = (@v1 / @v2 - @v3) / @v4 * 100
    --print @v5
    --结果:25.6293000000
    --使用变量带入公式,结果不够精确
    select @v5 = (25581 / 0.9 - 0) / 110901.352768 * 100
    --print @v5
    --结果:25.6293837934
    --而直接使用数字,结果确很精确!
    select @v5 = (@v1 / @v2 - @v3)*1.0 / @v4 * 100
    print @v5