Calcolo degli interessi in Objective C?
-
29-09-2019 - |
Domanda
Che cosa è un semplice pezzo di codice per leggere un numero memorizzato, interessi calcolare sul valore memorizzato, ad esempio $ 100, a un tasso del 10%. Poi ho memorizzare il nuovo valore al posto di quello vecchio. Stavo lavorando in questa direzione:
NSNumber *bankTemp = [[NSNumber alloc] initWithInt:[[NSUserDefaults standardUserDefaults] integerForKey:@"bank"]];
bankTemp = bankTemp + (bankTemp * .10);
[[NSUserDefaults standardUserDefaults] setInteger:bankTemp forKey:@"bank"];
bankTemp
sarebbe il $ 100. Sono abbastanza certo che sto facendo qualcosa di sbagliato nella linea mediana. Cosa posso fare per correggerlo?
EDIT: Questo non è lavoro. Sto lavorando su un'applicazione gioco commerciale.
EDIT:
ho ottenuto fino a questo punto ora:
NSNumber *bankTemp = [[NSNumber alloc] initWithInt:[[NSUserDefaults standardUserDefaults] integerForKey:@"bank"]];
bankTemp = [bankTemp intValue] * 1.10;
[[NSUserDefaults standardUserDefaults] setInteger:[bankTemp intValue] forKey:@"bank"];
EDIT:
Per far fronte a centesimi, sto ... omettendoli!
Il gioco non ha bisogno di loro in modo che non vale la pena. interi è.
Sono curioso di vedere quali soluzioni le persone hanno a trattare con centesimi, però, quindi vi prego di continuare a inviare i vostri pensieri su centesimi.
Soluzione
Non si vuole un NSNumber. NSNumber è una classe che avvolge i tipi numerici primitivi in ??modo da poter usarli con, ad esempio, le collezioni di cacao. Se si vuole fare la matematica, si deve solo usare le primitive. Basta fare:
NSInteger bankTemp = [[NSUserDefaults standardUserDefaults] integerForKey:@"bank"];
bankTemp = bankTemp + bankTemp * 0.10;
[[NSUserDefaults standardUserDefaults] setInteger:bankTemp forKey:@"bank"];
E per la memorizzazione di denaro, è necessario considerare come si desidera trattare centesimi. E 'forte la tentazione di uso galleggianti in modo da poter letteralmente 5,25 dollari, ma galleggianti sono imprecisi e causare problemi di ogni genere quando si confrontano per l'uguaglianza e così via, quindi di solito è meglio per memorizzare la valuta come un numero intero più piccola unità possibile e si dividono per ottenere tagli più grandi. Quindi, se si desidera memorizzare dollari e centesimi, rappresentano $ 100.00 come 10000.
Altri suggerimenti
Il problema più importante è che non si può moltiplicare un NSNumber in quel modo. NSNumber è un'istanza, non un tipo scalare. Stick con moltiplicare numeri reali, come galleggianti o interi.
(io suggerirei un galleggiante.)
Modifica:. Scratch che, non si può fare la moltiplicazione del genere con una NSInteger
Come un abstract, per ottenere il 10% aggiunto a un valore, si può fare Valore * 1.10 Se si vuole solo sapere che cosa il 10% di un valore è, fare value * 0.10
Se stai cercando di fare calcoli mensili, o di interesse nel corso del tempo, avrete bisogno di utilizzare una di queste formule.