select round(字段1-字段2,2) from ...

解决方案 »

  1.   

    float保存的本来就是非精确的数据,相减后,小数位当然有N位啦.改用decimal数据类型吧.
      

  2.   

    declare @a float,@b float
    select @a=232.333,@b=22.3434
    select @a-@b
    select convert(decimal(10,2),@a-@b)
    --结果
    ----------------------------------------------------- 
    209.9896(1 row(s) affected)             
    ------------ 
    209.99(1 row(s) affected)
      

  3.   

    刚才看了SQL介绍,说如果convert(decimal(10,2),@a-@b)转换的话,如果值为空,会报错,是吗
      

  4.   

    下次改用decimal或numeric型,不用FLOAT了
      

  5.   

    是的,但你可以让他不为空:
    convert(decimal(10,2),isnull(@a,0)-isnull(@b,0))