303 votes

Faire en sorte qu'un flotteur n'affiche que deux décimales

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 ?

662voto

Andrew Grant Points 35305

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

201voto

Vaibhav Saran Points 4078

Voici quelques corrections

//for 3145.559706

@"%f"    = 3145.559706
@"%.f"   = 3146
@"%.1f"  = 3145.6
@"%.2f"  = 3145.56
@"%.02f" = 3145.56 // which is equal to @"%.2f"
@"%.3f"  = 3145.560
@"%.03f" = 3145.560 // which is equal to @"%.3f"

et ainsi de suite...

20voto

Rick Points 310

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.

9voto

imti Points 1

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))

3voto

Pablo Santa Cruz Points 73944

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);

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