Расчет интереса к цели c? - PullRequest
1 голос
/ 25 июня 2010

Что такое простой фрагмент кода для считывания сохраненного числа, расчета процента по сохраненному значению, скажем, $ 100, по ставке% 10. Затем я сохраняю новое значение вместо старого. Я работал над этим:

NSNumber *bankTemp = [[NSNumber alloc] initWithInt:[[NSUserDefaults standardUserDefaults] integerForKey:@"bank"]];  
bankTemp = bankTemp + (bankTemp * .10);
[[NSUserDefaults standardUserDefaults] setInteger:bankTemp forKey:@"bank"];

bankTemp будет 100 долларов. Я вполне уверен, что я делаю что-то не так в средней линии. Что я могу сделать, чтобы исправить это?

РЕДАКТИРОВАТЬ: Это не домашнее задание. Я работаю над приложением для торговой игры.

EDIT:

Сейчас я зашел так далеко:

        NSNumber *bankTemp = [[NSNumber alloc] initWithInt:[[NSUserDefaults standardUserDefaults] integerForKey:@"bank"]];  
        bankTemp = [bankTemp intValue] * 1.10;
        [[NSUserDefaults standardUserDefaults] setInteger:[bankTemp intValue] forKey:@"bank"];

РЕДАКТИРОВАТЬ:

Чтобы разобраться с центами, я ... опускаю их!

Игра не нуждается в них, поэтому они не стоят хлопот. целые числа это.

Мне любопытно посмотреть, какие решения имеют люди при работе с центами, поэтому, пожалуйста, продолжайте публиковать свои мысли по центам.

Ответы [ 3 ]

3 голосов
/ 25 июня 2010

Вы не хотите NSNumber.NSNumber - это класс, который охватывает примитивные числовые типы, поэтому вы можете использовать их, например, с коллекциями Какао.Если вы хотите заниматься математикой, вы должны просто использовать примитивы.Просто сделайте:

NSInteger bankTemp = [[NSUserDefaults standardUserDefaults] integerForKey:@"bank"];  
bankTemp = bankTemp + bankTemp * 0.10;
[[NSUserDefaults standardUserDefaults] setInteger:bankTemp forKey:@"bank"];

И для хранения денег вам нужно подумать, как вы хотите относиться к центам.Соблазнительно использовать числа с плавающей запятой, чтобы вы могли буквально иметь 5,25 доллара, но числа с плавающей запятой неточны и вызывают всевозможные проблемы при сравнении на равенство и так далее, поэтому обычно лучше хранить вашу валюту как целое число в наименьшей возможной единице и делить наполучить больше конфессий.Поэтому, если вы хотите хранить доллары и центы, представьте 100,00 долларов как 10000.

1 голос
/ 25 июня 2010

Самая значительная проблема в том, что вы не можете умножить NSNumber таким образом. NSNumber - это экземпляр, а не скалярный тип. Придерживайтесь умножения действительных чисел, как числа с плавающей точкой или целых чисел.

(я бы предложил поплавок.)

1 голос
/ 25 июня 2010

Редактировать: Поцарапайте это, вы не можете делать умножение подобным образом с NSInteger.

В качестве резюме, чтобы добавить 10% к значению, вы можете сделать Value * 1.10знать, что составляет 10% от значения, делать значение * 0,10

Если вы хотите делать ежемесячные вычисления или рассчитывать проценты по времени, вам нужно будет использовать одну из этих формул.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...