2013-11-22 34 views
0

我的公式给了我意想不到的回复。如果使用公式计算单元格的统计信息,请使用公式

=IF(I5+H5=0,"Paid","Due") 

见下文

H  I  J  k 
-£34.40 £34.40 £0.00 Due 

细胞H被计算与此

=(SUM(F5+G5))*-1 

查看具有精确相同的公式正确的输出上相同的工作表

=IF(I3+H3=0,"Paid","Due") 

    H   I  J  K 
-£205.44 £205.44 £0.00 Paid 

细胞H被计算他一样

=(SUM(F3+G3))*-1 

任何想法,为什么最高计算不正确,但底部是。

+0

因为总和'=(SUM(F5 + G5))* - 1'实际上可能不是' - 34.40'£但像' - £34.4000' ? 增加小数位数并检查 –

+0

你是对的,谢谢。=(SUM(F5 + G5))* - 1 = - £34.404。是否有一种简单的方法过于强制2位小数? –

+0

很高兴为您解决:) –

回答

0

这很可能是浮点问题。您不应该将浮点数直接与=进行比较,因为计算机无法存储完整的小数位。就像如果您将1美元除以3,您最终得到.3333333333333美分,如果您添加3个您不一定会收回1美元,但由于最终“丢失”3333而稍微减少。比较的正确方法是使用Delta阈值,这意味着它需要“多么接近”。

所以不是

if (a+b=c,"paid", "due") 

你会做

if(ABS(c-(a+b))<.01, "paid", "due") 

所以在这种情况下,0.01是增量,也有“如何接近”是。它必须在1美分之内。该公式的字面意思是“如果c和(a + b)之间的差异的绝对值小于1美分,返回付费,否则返回到期(当然,如果他们多付,这会说明是因为,所以请记住)

你应该总是这样做

+0

我明白你在说什么b我把价值改变成了荒谬的东西,仍然不起作用。 = IF(I5 + H5> 100000,“Paid”,“Due”) –

+0

so = IF(I5 + H5> 100000,“Paid”,“Due”)说“已付”?如果是这样,而不是付费= IF(I5 + H5> 100000,(I5 + H5),“到期”),看看它是什么价值 – AwokeKnowing

+0

我得到它排序,感谢您的帮助。我创建了一个新的工作簿,并复制了公式并粘贴了信息,似乎已经完成了。当粘贴公式时,我可以看到额外的小数位来自哪里,并且手动纠正了这些公式,我现在知道是什么引起了他们,所以我希望不会再遇到问题。你让我朝着正确的方向前进。 –