读取存储的数字的简单代码是什么,以%10的速率计算存储值的利息,比如100美元。然后我将新值存储在旧值的位置。我正在为此努力:
NSNumber *bankTemp = [[NSNumber alloc] initWithInt:[[NSUserDefaults standardUserDefaults] integerForKey:@"bank"]];
bankTemp = bankTemp + (bankTemp * .10);
[[NSUserDefaults standardUserDefaults] setInteger:bankTemp forKey:@"bank"];
bankTemp
将是100美元。我相当肯定我在中间线做错了。我该怎么做才能纠正它?
编辑:
我现在已经走了这么远:
NSNumber *bankTemp = [[NSNumber alloc] initWithInt:[[NSUserDefaults standardUserDefaults] integerForKey:@"bank"]];
bankTemp = [bankTemp intValue] * 1.10;
[[NSUserDefaults standardUserDefaults] setInteger:[bankTemp intValue] forKey:@"bank"];
编辑:
要处理美分,我......省略它们!
游戏不需要它们,所以它们不值得麻烦。它是整数。
我很想知道人们有什么解决方案可以处理美分,所以请继续发表你对美分的想法。
答案 0 :(得分:3)
你不需要NSNumber。 NSNumber是一个包装原始数字类型的类,因此您可以将它们与例如Cocoa集合一起使用。如果你想做数学,你应该只使用原语。只是做:
NSInteger bankTemp = [[NSUserDefaults standardUserDefaults] integerForKey:@"bank"];
bankTemp = bankTemp + bankTemp * 0.10;
[[NSUserDefaults standardUserDefaults] setInteger:bankTemp forKey:@"bank"];
为了存钱,你需要考虑如何对待美分。使用浮点数很诱人,因此你可以实际拥有5.25美元,但浮点数不精确并且在比较相等时会产生各种各样的问题,因此通常最好将货币存储为可能的最小单位的整数并除以获得更大的面额。因此,如果您想存储美元和美分,则表示$ 100.00为10000。
答案 1 :(得分:1)
编辑:抓一点,你不能像NSInteger那样进行乘法运算。
作为摘要,要将10%的值添加到值中,您可以执行Value * 1.10 如果您只想知道值的10%,请执行值* 0.10
如果您正在考虑每月进行一次计算,或者随着时间的推移感兴趣,您需要使用其中一种公式。
答案 2 :(得分:1)
最重要的问题是你无法以这种方式乘以NSNumber。 NSNumber是一个实例,而不是标量类型。坚持乘以实数,浮点数或整数。
(我建议浮动。)