Вопрос

Что такое простой кусок кода для чтения хранимого числа, рассчитывать проценты по сохраненной стоимости, скажем, 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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top