J'ai la variable suivante:
NSNumber *consumption = [dict objectForKey:@"con"];
Qui renvoie 42. Comment puis-je ajouter 10 chiffres à gauche à ce chiffre, avec zéros. La sortie devrait ressembler à,
0000000042
ou si c'était 420,
0000000420
NSString *paddedStr = [NSString stringWithFormat:@"%010d", 42];
EDIT: C'est la mise en forme de style C. % nd signifie que la largeur est au moins n. Ainsi, si le nombre entier est long de 2 chiffres, vous aurez une longueur de 3 chaînes (lorsque% 3d est utilisé). Par défaut, les espaces vides laissés sont remplis par un espace. % 0nd (0 entre% et n) signifie que 0 est utilisé pour le remplissage à la place de l'espace. Ici n
est la longueur totale. Si le nombre entier est inférieur à n
chiffres, le remplissage à gauche est utilisé.
La manière Objective-C
,
NSNumberFormatter * numberFormatter = [[[NSNumberFormatter alloc] init] autorelease];
[numberFormatter setPaddingPosition:NSNumberFormatterPadBeforePrefix];
[numberFormatter setPaddingCharacter:@"0"];
[numberFormatter setMinimumIntegerDigits:10];
NSNumber * number = [NSNumber numberWithInt:42];
NSString * theString = [numberFormatter stringFromNumber:number];
NSLog(@"%@", theString);
La méthode C
est plus rapide cependant.
Vous ne pouvez pas dans la NSNumber
elle-même. Si vous créez une chaîne à partir du nombre ou utilisez NSLog()
, utilisez simplement le format approprié, par exemple.
NSLog(@"%010d", [consumption intValue]);
Avec NSNumberFormatter , vous pouvez effectuer à peu près n'importe quel formatage de nombre. Dans ce cas, je pense que vous voudriez utiliser le setFormatWidth: et setPaddingCharacter: functions.
avec variablenum_digits
NSString* format =[NSString stringWithFormat:@"%%0%zdzd", num_digits];
NSString *theString = [NSString stringWithFormat:format, 42];
Par exemple. Remplissez le reste avec des zéros, 5 chiffres:
NSInteger someValue = 10;
[NSString stringWithFormat:@"%05ld", someValue];
Équivalent de .02f
pour le numéro flottant lorsque vous n'avez besoin que de 2 chiffres après le point.
Vous avez donc 0 = remplir avec des zéros, 5 = le nombre de chiffres et le type.
let x = 1078.1243
let numFormatter = NumberFormatter()
numFormatter.minimumFractionDigits = 1 // for float
numFormatter.maximumFractionDigits = 1 // for float
numFormatter.minimumIntegerDigits = 10 // how many digits do want before decimal
numFormatter.paddingPosition = .beforePrefix
numFormatter.paddingCharacter = "0"
let s = numFormatter.string(from: NSNumber(floatLiteral: x))!
SORTIE
"0000001078.1"