Si j'ai un nombre int aNum = 2000000
comment le formater afin de pouvoir l'afficher sous la forme NSString 2 000 000?
Réponses
Trop de publicités? 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.
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.
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.
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]];