Расчет интерес к объективам C?
-
29-09-2019 - |
Вопрос
Что такое простой кусок кода для чтения хранимого числа, рассчитывать проценты по сохраненной стоимости, скажем, 100 долларов, по ставке %10. Затем я храню новую ценность вместо старого. Я работал над этим:
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"];
РЕДАКТИРОВАТЬ:
Чтобы иметь дело с центами, я ... опускаю их!
Игра не нуждается в них, поэтому они не стоят проблем. Целые числа это.
Мне любопытно посмотреть, какие решения люди должны иметь дело с центами, поэтому, пожалуйста, продолжайте публиковать свои мысли о центах.
Решение
Вы не хотите NSNumber. NSNumber - это класс, который оборачивается вокруг примитивных числовых типов, поэтому вы можете использовать их, например, с коллекциями какао. Если вы хотите заняться математикой, вам следует просто использовать примитивы. Просто делать:
NSInteger bankTemp = [[NSUserDefaults standardUserDefaults] integerForKey:@"bank"];
bankTemp = bankTemp + bankTemp * 0.10;
[[NSUserDefaults standardUserDefaults] setInteger:bankTemp forKey:@"bank"];
И для хранения денег вам нужно подумать о том, как вы хотите относиться к центам. Заманчиво использовать поплавки, чтобы вы могли буквально иметь 5,25 доллара, но поплавки неточны и вызывают всевозможные проблемы при сравнении с равенством и т. Д., Поэтому, как правило, лучше хранить свою валюту в качестве целого числа в наименьшей единице и делиться на Получите большие деноминации. Так что, если вы хотите хранить доллары и центы, представляют 10000 долларов США.
Другие советы
Наиболее важной проблемой является то, что вы не можете умножить NSNumber таким образом. NSNumber - это экземпляр, а не скалярная тип. Придерживайтесь умножения реальных чисел, как поплавок или целых чисел.
(Я бы предложил поплавок.)
РЕДАКТИРОВАТЬ: Поцарапайте это, вы не можете сделать такой умножение с помощью NSINTEGER.
В качестве абстрактного, чтобы получить 10% добавлено к значению, вы можете сделать значение * 1.10, если вы просто хотите знать, что такое 10% значения, сделайте значение * 0.10
Если вы ищете ежемесячные расчеты или проценты с течением времени, вам нужно использовать одну из этих формул.