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.

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top