excel的if条件公式结果有问题
e=b+c+d,当e大于等于a时,f自动生成1,但是f4的公式结果明显有问题。如果e4不用公式求和,直接输入,则f4可以得到1。a、b、c、d均为手动输入,只有小数点后2...
e=b+c+d,当e大于等于a时,f自动生成1,但是f4的公式结果明显有问题。如果e4不用公式求和,直接输入,则f4可以得到1。
a、b、c、d均为手动输入,只有小数点后2位。格式均为数值,没有文本之类的。
为什么现在得不出f4=1的结果? 展开
a、b、c、d均为手动输入,只有小数点后2位。格式均为数值,没有文本之类的。
为什么现在得不出f4=1的结果? 展开
7个回答
展开全部
首先,因为电脑中只能储存整数,没有“小数”的概念的,所以小数运算的方式是用“浮点运算”的方式来表示(这里就不解释了,也是自己水平问题,不能用简明易懂的语言解释),所以小数运算后我们看到的结果,只是无限接近应得结果的一个约数。越经过多次运算,最终结果就越容易偏差(尽管我们看到的结果是“正确”的)。所以你F列上的结果是小数运算后的结果,再用它去减手工输入的A列数据,又再运算多一次,就不一定符合你设定的条件了。
其实要达到你的目的,也不需要这样的转折,因为这样会增加小数运算的环节,可以直接点,如:
=IF(E4>=A4,1,"")
这样就能得到你要的效果了。
其实要达到你的目的,也不需要这样的转折,因为这样会增加小数运算的环节,可以直接点,如:
=IF(E4>=A4,1,"")
这样就能得到你要的效果了。
展开全部
是这样的,计算机系统计算是尾位数的不是正好2位小数,所以:解决方案是=IF(ROUND(E4,2)-ROUND(A4,2)>=0,"1",""),用函数定义一下小数点2位数就可以了,你试试
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
浮点计算的bug,E2公式变更为=ROUND(ROUND(D2+C2+B2,3),2),可以解决此问题
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在Excel选项中,找到“以显示精度为准”,并勾选之
追问
谢谢,你的方法一试就成功了,不过我还是想了解这是什么原理。因为除了E4是公式求和,A4B4C4D4我都确定是手动输入的值,没有小数点后N位还有值的可能性,但根据这方法的原理,明显应该是小数点2位后还有值。这也太不科学了
追答
这是处理器进行浮点运算时的BUG,任何软件都不可回避。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
小数点位数只是显示数值,比较时以实际数值为准。也就是说现在E4的值>220.80,有些小数没有显示。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
果然有bug,加过以后变小了,只是小得不明显,放大足够倍数就能看到,受教了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询