J'ai la valeur 25.00
dans un float
mais lorsque je l'imprime à l'écran, c'est le suivant 25.0000000
.
Comment puis-je afficher la valeur avec seulement deux décimales ?
Réponses
Trop de publicités?Le problème n'est pas la façon dont le numéro est stocké, mais la façon dont vous l'affichez. Lorsque vous le convertissez en chaîne, vous devez l'arrondir à la précision souhaitée, qui, dans votre cas, est de deux décimales.
Par exemple
NSString* formattedNumber = [NSString stringWithFormat:@"%.02f", myFloat];
%.02f indique au formateur que vous allez formater un flottant (%f) et que celui-ci doit être arrondi à deux chiffres et complété par des 0.
Par exemple
%f = 25.000000
%.f = 25
%.02f = 25.00
Vous pouvez également essayer d'utiliser NSNumberFormatter :
NSNumberFormatter* nf = [[[NSNumberFormatter alloc] init] autorelease];
nf.positiveFormat = @"0.##";
NSString* s = [nf stringFromNumber: [NSNumber numberWithFloat: myFloat]];
Il se peut que vous deviez également définir le format négatif, mais je pense qu'il est suffisamment intelligent pour s'en rendre compte.
En langage Swift, si vous voulez montrer, vous devez l'utiliser de cette manière. Pour assigner une double valeur dans UITextView, par exemple :
let result = 23.954893
resultTextView.text = NSString(format:"%.2f", result)
Si vous voulez afficher dans le LOG comme le fait objective-c en utilisant NSLog(), alors en langage Swift vous pouvez le faire de cette façon :
println(NSString(format:"%.2f", result))
En Objective-C, si vous avez affaire à des tableaux de caractères ordinaires (au lieu de pointeurs vers NSString), vous pouvez également utiliser :
printf("%.02f", your_float_var);
Par contre, si ce que vous voulez, c'est stocker cette valeur dans un tableau de chars, vous pouvez utiliser :
sprintf(your_char_ptr, "%.02f", your_float_var);
- Réponses précédentes
- Plus de réponses