select cast(100*1.0/3 as decimal(18,2))
显示为:33.33select cast(100/3 as decimal(18,2))
显示为:33.00为什么差别这么大?

解决方案 »

  1.   

    select 100/(3 *1.0),100*1.0/3 --结果一样
    如果两个数都是整数时,结果会去掉小数部份
      

  2.   

    /(除)
    用一个数除以另一个数(算术除法运算符)。语法
    dividend / divisor参数
    dividend是要被除的数字表达式。dividend 可以是数字数据类型分类中的任何数据类型(datetime 或 smalldatetime 数据类型除外)的任何有效 Microsoft® SQL Server™ 表达式。divisor除数的数字表达式。divisor 可以是具有数字数据类型分类中任何数据类型(datetime 和 smalldatetime 数据类型除外)的任何有效 SQL Server 表达式。结果类型
    返回优先级较高的参数的数据类型。有关数据类型优先级的更多信息,请参见数据类型的优先顺序。 如果用一个整型的 divisor 去除整型的 dividend,其结果是一个整数,小数部分被截断。