代码之家  ›  专栏  ›  技术社区  ›  Doonie Darkoo

返回零而不是正确数量的公式

  •  2
  • Doonie Darkoo  · 技术社区  · 6 年前
    SELECT (16/100)*(12200)
    

    此查询正在返回 0 尽管它应该回来 1952 . 为什么?

    1 回复  |  直到 6 年前
        1
  •  2
  •   Igor Borisenko    6 年前

    因为16/100是整数,它四舍五入为零。

    select CAST(16 AS DECIMAL(20,4))/100*(12200)
    

    或者更好的方法,减少舍入误差。

    select CAST(16*12200 AS DECIMAL(20,4))/100