Je possède ce code:Ajout NSDecimalNumbers ne fonctionne pas tout à fait
NSLog(@"Count of items we will loop through is: %d",[self.defaultBudgetItemsArray count]);
id object;
while (object = [e nextObject]) {
if ([object objectForKey:@"actualCost"]) {
currentTotal = [currentTotal decimalNumberByAdding: [object objectForKey:@"actualCost"]];
NSLog(@"decimalNumberByAdding gives: %@",[numberFormatter stringFromNumber:[currentTotal decimalNumberByAdding: [object objectForKey:@"actualCost"]]]);
NSLog(@"Trying to add: %@",[numberFormatter stringFromNumber:[object objectForKey:@"actualCost"]]);
}
}
totalActualCostLabel.text = [numberFormatter stringFromNumber:currentTotal];
NSLog(@"Budget items total: %@",[numberFormatter stringFromNumber:currentTotal]);
La sortie de la console est:
2010-10-09 12:58:45.285 App[11659:307] Count of items we will loop through is: 6
2010-10-09 12:58:45.287 App[11659:307] decimalNumberByAdding gives: ($0.00)
2010-10-09 12:58:45.289 App[11659:307] Trying to add: $0.00
2010-10-09 12:58:45.292 App[11659:307] decimalNumberByAdding gives: ($0.00)
2010-10-09 12:58:45.293 App[11659:307] Trying to add: $0.00
2010-10-09 12:58:45.296 App[11659:307] decimalNumberByAdding gives: ($0.00)
2010-10-09 12:58:45.301 App[11659:307] Trying to add: $0.00
2010-10-09 12:58:45.303 App[11659:307] decimalNumberByAdding gives: ($0.00)
2010-10-09 12:58:45.305 App[11659:307] Trying to add: $5.00
2010-10-09 12:58:45.307 App[11659:307] decimalNumberByAdding gives: ($0.00)
2010-10-09 12:58:45.309 App[11659:307] Trying to add: $0.00
2010-10-09 12:58:45.311 App[11659:307] decimalNumberByAdding gives: ($0.00)
2010-10-09 12:58:45.318 App[11659:307] Trying to add: $0.00
2010-10-09 12:58:45.320 App[11659:307] Budget items total: ($0.00)
Notez que l'une des lignes "Essayer d'ajouter" dit $ 5.00 mais decimalnumberbyadding ne le fait pas semble faire son truc. Des idées?
Merci!
-Max
Mes 2cents - utilisent des flotteurs. Il est beaucoup plus facile d'ajouter des structures spécifiques (comme int et float ou double) que d'utiliser NSNumber/NSDecimalNumber etc etc, et fonctionnera probablement. –
Non, mon Dieu, s'il vous plaît, n'utilisez pas de flotteurs. Vous ne voulez jamais, jamais utiliser des nombres à virgule flottante pour représenter des devises (les erreurs d'arrondi peuvent vraiment gâcher votre programme!). Utilisez des entiers et représentez tout en centimes. –
Montrez-nous où vous créez l'énumérateur et où vous déclarez currentTotal. – NSResponder