【发布时间】:2014-04-22 22:39:09
【问题描述】:
我一直在寻找答案,但找不到。我正在开发一个使用利率的 iOS 7 应用程序。我已经声明了以下内容:
double InterestRate;
InterestRate = 3.9;
我将按钮标签设置为打印 Interest 3.9% 并且效果很好:
[btnInterest setTitle:[NSString stringWithFormat:@"Interest %.2f%%",InterestRate] forState:UIControlStateNormal];
然后,当有人单击按钮时,我会将其发送到我的 PopOver 窗口,如下所示:
if ([[segue identifier] isEqualToString:@"InterestController"])
{
CC_InterestViewController *vc = [segue destinationViewController];
vc.delegate = self;
[vc setInterestRate:InterestRate]; <---- BREAKPOINT HERE!!!!! (See Below)
}
我的 PopOver 收到的内容如下:
-(void)setInterestRate:(double)rate
{
interestRate = rate;
}
然后我将 3.9 分成不同的部分,因此我可以使用两列将它们分成 UIPickerview 以选择利率。唯一的问题是我得到:
3.89% 不是 3.9%
所以,我在将 InterestRate 从 Segue 发送到 PopOver 的点设置了一个断点,我发现 iOS 将我的 3.9 报告为 3.8999999999999。
我专门将其设置为 3.9。有没有更好的方法来做到这一点?我发现基本上如果我将设置设置为 3.9,然后 iOS 将报告为 3.8999999999999。
有什么想法吗?
-更新:
好的,这被标记为重复。但是,我使用的不是浮点数,而是双精度数。不确定它是否有很大的不同,但似乎没有答案。如果我声明 double = 3.9,然后我查看它的值,它说它是 3.89999999999999。这绝对不一样。所以,我的基本问题是处理这个问题的最佳方法是什么?我需要 3.9 始终等于 3.9,而不是 3.89999999999999。如果这是一个重复的问题,那么该链接为什么没有给出一个简单直接的答案来说明如何处理它,而是对这个问题进行了冗长的解释。我知道有问题。我正在寻找答案。
【问题讨论】:
-
这个已经讲过很多次了。浮点值不精确。
标签: ios objective-c double