cast(cast(round(9.7999999999999997E-3, 6) as float) as varchar(20))

解决方案 »

  1.   

    或者
    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)
      

  2.   

    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))
      

  3.   

    刚刚测试了一下,发现是存在这个问题,
    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