J'ai double numéro dans un format comme 34.123456789
. Comment puis-je le changer en 34.123?Ronde double en Objective-C
Je veux juste 3 chiffres après la virgule.
J'ai double numéro dans un format comme 34.123456789
. Comment puis-je le changer en 34.123?Ronde double en Objective-C
Je veux juste 3 chiffres après la virgule.
Vous pouvez l'imprimer à 3 décimales avec [NSString stringWithFormat:@"%.3f",d]
.
Vous pouvez à peu près rond avec round(d*1000)/1000
, mais bien sûr, ce n'est pas garanti pour être exact depuis 1000 n'est pas une puissance de 2.
Vous pouvez utiliser:
#include <math.h>
:
dbl = round (dbl * 1000.0)/1000.0;
Il suffit de garder à l'esprit que les flotteurs et les doubles sont aussi proches une approximation que le type sous-jacent peut fournir. Il peut ne pas être exact.
La solution approuvée a une petite faute de frappe. Il manque le "%".
Voici la solution sans la faute de frappe et avec un peu de code supplémentaire.
double d = 1.23456;
NSString* myString = [NSString stringWithFormat:@"%.3f",d];
myString sera "1.234".
Vous peut éditer des réponses incorrectes ... –
Et ne pas obtenir les votes? –
Si vous voulez faire
34.123456789 -> 34.123
34.000000000 -> 34 not 34.000
Vous pouvez utiliser NSNumberFormatter
NSNumberFormatter *fmt = [[NSNumberFormatter alloc] init];
[fmt setMaximumFractionDigits:3]; // 3 is the number of digits
NSLog(@"%@", [fmt stringFromNumber:[NSNumber numberWithFloat:34.123456789]]); // print 34.123
NSLog(@"%@", [fmt stringFromNumber:[NSNumber numberWithFloat:34.000000000]]); // print 34
premier a travaillé pour moi ... :( mais peut-être juste stupide ...: D – cV2