这个好像没有影响的,SQL有时候会显示成这样的。等高手来解释。

解决方案 »

  1.   

    declare @a table(c1 varchar(20),c2 int)
    insert @a(c1,c2)
    values('05-3-2',15)
    insert @a(c1,c2)
    values('05-3-2',100)select * from @aselect c1, c2 from @a 
    union all
    --select '总计',sum(CONVERT(float, c2)) from @a 
    select '总计',convert(decimal(8,2),sum(CONVERT(float, c2))) from @a 
    union all  
    select '人均',convert(decimal(8,2),sum(CONVERT(float, c2))/13) from @a order by c1,c2
      

  2.   

    得到8.8499999999999996,你因为你采用了float来计算的.15 位小数float [ ( n ) ]从 - 1.79E + 308 到 1.79E + 308 之间的浮点数字数据。n 为用于存储科学记数法 float 数尾数的位数,同时指示其精度和存储大小。n 必须为从 1 到 53 之间的值。n 所在范围 精度 存储大小 
    1-24 7 位数 4 字节 
    25-53 15 位数 8 字节 
      

  3.   


    float 和 real
    用于表示浮点数字数据的近似数字数据类型。浮点数据为近似值;并非数据类型范围内的所有数据都能精确地表示。select c1=cast(c1 as varchar(12)), c2 from test
    union all
    select '总计',sum(CONVERT(numeric(8,2), c2)) from test
    union all  
    select '人均'
          ,sum(c2/(13*1.0))  from test order by c1,c2