用round(if())函数求个人所得税为什么有的人会差一分钱?excel居然会算错?

我是用公式P7=ROUND(IF(Q7<=3500,0,IF((Q7-3500)<=1500,(Q7-3500)*0.03,(Q7-3500)*0.1-105)),2)求个所税,已知Q7=5224.35,居然算出个所税P7=67.43元少了一分钱。而报税软件上是67.44元是对的。我使用“工具--公式审核--公式求职”发现是“(Q7-3500)*0.1-105”这个环节上错误出在“172.435-105=67.434999999……”不是等于正确的67.435,这是何其荒唐啊?excel为什么会出这样的错误呢?请高人帮回答啊。谢谢。

  这不荒唐,这是浮点小数运算存在的误差,可以在中间环节加ROUND函数保留小数位数。
  一般不用IF函数计算,可以用下面的公式:
  =ROUND(MAX((Q7-3500)*{0.03,0.1,0.2,0.25,0.3,0.35,0.45}-{0,105,555,1005,2755,5505,13505},0),2)
  如果认为没那么高,也可以将后面的去掉,用:
  =ROUND(MAX((Q7-3500)*{0.03,0.1}-{0,105},0),2)追问

你的公式不错。谢谢你,也推荐大家借鉴。

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2016-10-08

这是因为Excel多次四舍五入导致的误差

可以在Excel选项中,找到公式,将允许的误差调小一些。

追问

我应当把最大误差调到小数点后5位吗?像是你上面显示的0.00001?

追答

本回答被提问者采纳
第2个回答  2015-12-01
建议你用VLOOKUP函数的模糊查找解决此问题。
相似回答