我在入库明细表中设置了如下的公式:
如下:
字段如下:入库单号,入库数量(money),含税单价(money),税率(money),不含税单价,含税金额,不含税金额.折扣(money)
其中含税单价(money)是4位小数.
用户在录入入库明细的时候,只要输入入库数量和含税单价和税率,其中不含税单价,含税金额,不含税金额我是设置公式的.
不含税单价(round((isnull([含税单价],0) * isnull([入库数量],0) / (1 + [税率]) * (1 - isnull([折扣],0)) / 100 * 100 / [入库数量]),4))。
不含税金额(round((isnull([含税单价],0) * isnull([入库数量],0) / (1 + [税率]) * (1 - isnull([折扣],0)) / 100 * 100),2))
含税金额(round((isnull([入库数量],0) * isnull([含税单价],0) * (1 - isnull([折扣],0)) / 100 * 100),2))用户输入:入库数量=2304,含税单价=6.7000,税率=0.17,得出:不含税单价=5.73(有四舍五入),含税金额=15436.80,不含金额=13193.84(没有四舍五入),应该是:13193.85才对的.
请教我的公式是不是有错,还是我的数据类型有错.为什么不四舍五入.请教大家,谢谢!

解决方案 »

  1.   

    (1)你的常量,如0,100之类,改为0.0, 100.0
    (2)在数据库里公式不要用round,因为你有的结果是另一个公式的参数,在查询时再用Round。在用计算器手工计算增值税时,如果提前四舍五入了也有这个问题。
      

  2.   

    用cast转换下 numeric(10,4),再对它前两位小数四舍五入
      

  3.   

    我把入库数量的数据类型改为了numeric数据类型,不含税金额(round((isnull([含税单价],0) * isnull([入库数量],0) / (1 + [税率]) * (1 - isnull([折扣],0)) / 100 * 100),2))
    可以得出了正确结果,但是为什么后面有4个0呢,能不能去掉