SELECT cast((1/3)as float)as sdc
SELECT convert(float,(1/3))as sdc
SELECT (1/3) as sdc我就是想不通为何这样的表达式结果始终为0

解决方案 »

  1.   

    SELECT cast((1/3)as float)as sdc
    先进性整数除法1/3=0,再castSELECT convert(float,(1/3))as sdc
    一样
    SELECT (1/3) as sdc
    一样应该SELECT cast((1.0/3)as float)as sdcSELECT convert(float,(1.0/3))as sdcSELECT (1.0/3) as sdc
      

  2.   

    或者
    SELECT cast(1 as float)/3 as sdc
    SELECT convert(float,1)/3))as sdc
      

  3.   

    原因是sql server的除法是默认其结果的精度为被除数的精度。楼主的例子中被除数均为1,其精度为整数,所以结果都为0。
      

  4.   

    1/3是用整型进行运算的,结果为0
    要在运算之前对1或者3中的一个进行强制类型转化成FLOAT的就有正确的结果了