72 votes

Comment ajouter des virgules au numéro tous les 3 chiffres dans Objective C?

Si j'ai un nombre int aNum = 2000000 comment le formater afin de pouvoir l'afficher sous la forme NSString 2 000 000?

150voto

Nik Points 2505

Utilisez NSNumberFormatter .

Plus précisément:

 NSNumberFormatter *formatter = [NSNumberFormatter new];
[formatter setNumberStyle:NSNumberFormatterDecimalStyle]; // this line is important!

NSString *formatted = [formatter stringFromNumber:[NSNumber numberWithInteger:2000000]];

[formatter release];
 

Par défaut, NSNumberFormatter utilise les paramètres régionaux actuels, de sorte que les séparateurs de regroupement sont définis par défaut sur leurs valeurs correctes. L'important est de ne pas oublier de définir un style de numérotation.

80voto

Barry Wark Points 73462

Ne pas faire votre propre mise en forme des nombres. Vous aurez presque certainement pas obtenir tous les cas bord droit ou de gérer correctement tous les possibles locales. Utiliser l' NSNumberFormatter pour la mise en forme de données numériques à une chaîne localisée de la représentation.

Vous utilisez l' NSNumberFormatter méthode d'instance -setGroupingSeparator: pour définir le séparateur de groupe à l' @"," (ou, mieux encore, [[NSLocale currentLocale] objectForKey:NSLocaleGroupingSeparator]; merci @ntesler) et -setGroupingSize: de mettre un séparateur de groupe tous les 3 chiffres.

34voto

Phil Calvin Points 1943

Il y a une méthode statique sur NSNumberFormatter qui fait exactement ce dont vous avez besoin:

int aNum = 2000000;
NSString *display = [NSNumberFormatter localizedStringFromNumber:@(aNum)
                                                     numberStyle:NSNumberFormatterDecimalStyle];

De cette manière est un peu plus succincte que la création d'un nouveau NSNumberFormatter si vous n'avez pas besoin de faire aucune configuration supplémentaire de l'formateur.

16voto

Nazir Points 571

Pensez-y car je vais obtenir ce post à la recherche d'un échantillon. Donc, si vous travaillez avec un numéro, faites attention aux paramètres suivants:

 setNumberStyle:NSNumberFormatterCurrencyStyle // if you are working with currency
 

Ça pourrait être aussi

 setNumberStyle:NSNumberFormatterDecimalStyle
 

Tout le code est pour ARC.

Si vous travaillez avec Integer et que vous souhaitez obtenir des résultats tels que 200 000

 int value = 200000;
NSNumberFormatter * formatter = [NSNumberFormatter new];
[formatter setNumberStyle:NSNumberFormatterDecimalStyle];
NSString * newString =  [formatter stringFromNumber:[NSNumber numberWithInteger:value]];
 

Si vous travaillez avec Float et que vous souhaitez obtenir des résultats tels que 200 000,00

 float value = 200000;
NSNumberFormatter * formatter = [NSNumberFormatter new];
[formatter setNumberStyle:NSNumberFormatterDecimalStyle];
[formatter setMaximumFractionDigits:2]; // Set this if you need 2 digits
NSString * newString =  [formatter stringFromNumber:[NSNumber numberWithFloat:value]];
 

1voto

Alex Wayne Points 58113

Découvrez NSNumberFormatter dans la documentation.

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