Question

Qu'est-ce qu'un simple morceau de code pour lire un numéro enregistré, l'intérêt sur la valeur calculate stockée, disons 100 $, à un taux de 10%. Ensuite, je stocke la nouvelle valeur à la place de l'ancien. Je travaillais à ceci:

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

bankTemp serait 100 $. Je suis assez certain que je fais quelque chose de mal dans la ligne médiane. Que puis-je faire pour y remédier?

EDIT: Ce n'est pas devoirs. Je travaille sur une application de jeu de trading.

EDIT:

J'ai arrivé jusqu'ici maintenant:

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

EDIT:

Pour faire face à cents, je suis ... les omettre!

Le jeu ne les ont pas besoin donc ils ne valent pas la peine. entiers, il est.

Je suis curieux de voir ce que les gens de solutions doivent traiter cents, donc s'il vous plaît continuer à poster vos pensées sur cents.

Était-ce utile?

La solution

Vous ne voulez pas NSNumber. NSNumber est une classe qui enroule autour des types primitifs numériques afin que vous puissiez les utiliser, par exemple, les collections de cacao. Si vous voulez faire des maths, vous devez simplement utiliser les primitives. Il suffit de faire:

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

Et pour stocker l'argent, vous devez considérer la façon dont vous voulez traiter cents. Il est tentant de flotteurs d'utilisation afin que vous puissiez littéralement avoir 5,25 dollars, mais flotteurs sont imprécises et causer toutes sortes de problèmes lorsque l'on compare l'égalité et ainsi de suite, il est généralement préférable de stocker votre monnaie comme un entier dans la plus petite unité possible et diviser pour obtenir de grosses coupures. Donc, si vous voulez stocker dollars et en cents, représentent 100,00 $ 10000 comme.

Autres conseils

Le problème le plus important est que vous ne pouvez pas multiplier un NSNumber de cette façon. NSNumber est une instance, pas un type scalaire. Bâton avec la multiplication des nombres réels, comme des flotteurs ou des entiers.

(je vous suggère un flotteur.)

Edit:. Scratch, vous ne pouvez pas faire la multiplication comme ça avec un NSInteger

Comme un résumé, pour obtenir 10% ajouté à une valeur, vous pouvez faire Valeur * 1.10 Si vous voulez juste savoir ce que 10% d'une valeur est, faire valeur * 0,10

Si vous cherchez à faire des calculs mensuels ou intérêt au fil du temps, vous aurez besoin d'utiliser l'une de ces formules.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top