用round(if())函数求个人所得税为什么有的人会差一分钱?excel居然会算错?
我是用公式P7=ROUND(IF(Q7<=3500,0,IF((Q7-3500)<=1500,(Q7-3500)*0.03,(Q7-3500)*0.1-105)),2)求...
我是用公式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为什么会出这样的错误呢?请高人帮回答啊。谢谢。
展开
3个回答
展开全部
这不荒唐,这是浮点小数运算存在的误差,可以在中间环节加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)
一般不用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)
追问
你的公式不错。谢谢你,也推荐大家借鉴。
展开全部
建议你用VLOOKUP函数的模糊查找解决此问题。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询