用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为什么会出这样的错误呢?请高人帮回答啊。谢谢。 展开
 我来答
s今生缘
高粉答主

2015-12-01 · 醉心答题,欢迎关注
知道大有可为答主
回答量:3.2万
采纳率:85%
帮助的人:4916万
展开全部
  这不荒唐,这是浮点小数运算存在的误差,可以在中间环节加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)
追问
你的公式不错。谢谢你,也推荐大家借鉴。
zzllrr小乐
高粉答主

推荐于2016-10-08 · 小乐数学,小乐阅读,小乐图客等软件原作者,“zzllrr小乐...
zzllrr小乐
采纳数:20147 获赞数:78798

向TA提问 私信TA
展开全部

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

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

追问
我应当把最大误差调到小数点后5位吗?像是你上面显示的0.00001?
追答
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
DJ山土
2015-12-01
知道答主
回答量:8
采纳率:0%
帮助的人:8050
展开全部
建议你用VLOOKUP函数的模糊查找解决此问题。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式