select F_Name,Sum(isnull(M.F_xj,0)-isnull(M.F_xj2,0)) as F_XXj from T_bookm
为什么上面这条语句相减后会出现很多小数点呢?如,49.999999999,可我数据里面没有这么多小数点
怎么把这些小数去掉,只保留两位小数?

解决方案 »

  1.   

    你的数据类型大概是float或real型吧?
      

  2.   

    tryselect F_Name,Cast(Sum(isnull(M.F_xj,0)-isnull(M.F_xj2,0)) As Numeric(10,2)) as F_XXj from T_bookm
      

  3.   

    可以这样格式化一下
    select F_Name,cast(ltrim(str(Sum(isnull(M.F_xj,0)-isnull(M.F_xj2,0)),15,2)) as numeric(12,2)) as F_XXj from T_bookm
      

  4.   

    ROUND ( numeric_expression , length [ , function ] )
      

  5.   

    方法上面有人说了
    我说下原因,呵呵:
    ------------------------------------------------
    SUM函数以最精确的表达式数据类型返回所有表达式值的和。表达式结果                 返回类型 
    整数分类                   int 
    decimal分类 (p, s)         decimal(38, s) 
    money 和 smallmoney 分类   money 
    float 和 real 分类         float 
    -------------------------------------------------
    减号表达式返回优先级较高的参数的数据类型
    ------------------------------------------
    上面二合一就出来那么多小数点