19 votes

Comment représenter l'argent en Objective-C / iOS ?

Je travaille sur une application iPhone et je souhaite représenter des montants d'argent ($). Je ne peux pas utiliser les flottants car ils introduisent un certain nombre d'erreurs d'arrondi. Que puis-je utiliser ?

Je pense définir ma propre classe Money et stocker les dollars et les pennies en tant que NSInteger en interne.

@interface Money : NSObject {
    //$10.25 is stored as dollas=10 and pennies=25
    NSInteger dollars;
    NSInteger pennies;
}

Une autre représentation possible (plus facile pour l'addition et la multiplication) consisterait à utiliser un seul NSInteger comme pennies.

@interface Money : NSObject {
    //$10.25 is stored as pennies=1025
    NSInteger pennies;
}

Qu'en pensez-vous ? Existe-t-il un type "BigDecimal" que je puisse utiliser ?

27voto

julesrif Points 11

Utiliser NSDecimalNumber. Bien sûr, il y a des frais généraux, mais à moins que vous ne puissiez prouver que c'est un problème, vous aimerez la précision qu'il vous donne.

http://www.cimgf.com/2008/04/23/cocoa-tutorial-dont-be-lazy-with-nsdecimalnumber-like-me/ http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Classes/NSDecimalNumber_Class/Reference/Reference.html

8voto

Doug Currie Points 26016

Utiliser le NSDecimalNumber classe.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X