declare @g float 
set @g=1000000
select cast(@g/10000 as numeirc(10,0)) as vReturn---vReturn=100.0,我要得到100就行了
set @g=1000100
select cast(@g/10000 as numeirc(10,2)) as vReturn---vReturn=100.01000000000001,我要得到100.01就行了

解决方案 »

  1.   

    用decimil或numeric数据类型,
    float为否点数,不精确
      

  2.   

    将你的结果转换成精度为2的数字型.
    select convert(numeric(9,2),@g/10000) as vReturn
      

  3.   

    老大们,我是要把一个数除10000,然后按照习惯输出。
    如:
    g=10001000 则g/10000=1000.1
    g=10000100 则g/10000=1000.01   
    g=10010000 则g/10000=1001
    g=10000010 则g/10000=1000.001
    g=10000001 则g/10000=1000.0001
    其中g是从数据库中取到的
      

  4.   

    declare @g float
    set @g=1000000
    select cast(round(@g/10000,0) as decimal(10)) as vReturn---vReturn=100.0,我要得到100就行了set @g=1000100
    select cast(round(@g/10000,2)as decimal(10,2)) as vReturn---vReturn=100.01000000000001,我要得到100.01就行了
      

  5.   

    各位老大们,我再说一次,我是把小数点后面的最后一个非0数后面的0给去了,至于从那位数字取起,是用@g来取得的,我不可能在每次处理时去改SQL的
      

  6.   

    To love_hate(爱恨交加) :那也不对呀,如果是把小数点后面的最后一个非0数后面的0给去了,那100.01000000000001的结果应该还是100.01000000000001。规则还是不明确。
      

  7.   

    这样啊,比较有趣!想多问一个问题?
    你的被除数一定是整数吗?还是可以是float型的?
      

  8.   

    呵,我的被除数和除数多是整数,
    2  stwangyan() (  ) 信誉:100 
    那个float是我写的,呵,浮点出错了:)
      

  9.   

    哎~~~~~Easy!!!
    管它是不是float,轉成 float就沒錯。
     Declare @g int
    SELECT @g=10001000
    SELECT cast(@g*1.0/10000 as float)SELECT @g=10000100
    SELECT cast(@g*1.0/10000 as float)SELECT @g=10000010
    SELECT cast(@g*1.0/10000 as float)
      

  10.   

    呵呵~~~~~~~~~So easy???
    N_Chow兄,有没有试过?
    试试这个:
    declare @g float
    set @g=10000001
    print cast(@g*1.0/10000 as float)
    我的结果是1000,而且当@g较大时,float使用科学记数法,将它转换成varchar还是科学记数法的形式。将其转换成numeric之类的又会多了几个零。我还没想到好办法。
      

  11.   

    不好意思,我搞错了。
    我用了print,
    佩服佩服!
      

  12.   

    看看下面两个有什么不同?MS真是的!
    select replace(rtrim(replace(convert(varchar(100),1000.100/4.000000),0,' ')),' ',0)
    select cast(1000.100*1.0/4.000000 as float)上而的结果是:250.025
    下面的结果是:250.02500000000001
      

  13.   

    看了rwq_(风云浪子) 的第一句代码:
    这个贴子的问题是不是可以解决了?这也是一个方法哦。
    select replace(rtrim(replace(convert(varchar(100),@g*1.0/10000),0,' ')),' ',0)
    浮点数的这个问题可能跟其在计算机内部的表示有关系啦!