0

我有一个由标题和浮点数组成的 NSDictionary(尽管它们被存储为字符串,因为它的价值),沿着“Paid for Dinner”:“15.00”的行。现在,这些条目是(15, 25.25, 25.75, 15),应该加起来81。(我已经在调试器中检查过,这些是存储的正确值,所以这不是数据源问题。)

我想以编程方式获取所有条目的总和,所以我有一段相当简单的代码可以做到这一点:

float currentTotal;
for(id key in thisSet) {
    currentTotal = currentTotal + [[thisSet objectForKey:key] floatValue];
}

在函数结束时,currentTotal正确设置为81

问题是,当我离开那个 ViewController 然后返回到它时(通过从我所在的 MasterView 到 DetailView 然后返回,如果重要的话),具有相同值的相同函数将返回81.006

值没有改变(我再次检查了调试器,它仍然是精确的(15, 25.25, 25.75, 15))并且代码没有改变,那么为什么简单地从另一个视图移动并返回会改变结果呢?

注意:我从thisthis等其他答案中了解浮点加法错误等。我不是在寻找为什么浮点运算可能不精确,我想知道为什么 View 的更改会影响结果。

4

1 回答 1

1

在使用局部变量currentTotal之前,必须为其分配一个值(在您的情况下为零),否则它的内容是未定义的,并且在每次调用函数时可能会有所不同。

(静态分析器应该警告您这一点。)

于 2013-06-28T22:55:42.617 回答