Round double valeur à 2 décimales

J’ai une valeur double comme 22.368511 Je veux arrondir à 2 décimales. c’est-à-dire qu’il devrait retourner 22.37

Comment puis je faire ça?

Comme dans la plupart des langues, le format est

%.2f 

vous pouvez voir plus d’exemples ici


Edit : J’ai aussi cela si vous êtes préoccupé par l’affichage du point dans les cas de 25.00

 { NSNumberFormatter *fmt = [[NSNumberFormatter alloc] init]; [fmt setPositiveFormat:@"0.##"]; NSLog(@"%@", [fmt ssortingngFromNumber:[NSNumber numberWithFloat:25.342]]); NSLog(@"%@", [fmt ssortingngFromNumber:[NSNumber numberWithFloat:25.3]]); NSLog(@"%@", [fmt ssortingngFromNumber:[NSNumber numberWithFloat:25.0]]); } 
 2010-08-22 15:04:10.614 a.out[6954:903] 25.34 2010-08-22 15:04:10.616 a.out[6954:903] 25.3 2010-08-22 15:04:10.617 a.out[6954:903] 25 

Vous pouvez utiliser le code ci-dessous pour le formater à deux décimales

 NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init]; [formatter setNumberStyle:NSNumberFormatterDecimalStyle]; [formatter setMaximumFractionDigits:2]; [formatter setRoundingMode: NSNumberFormatterRoundUp]; NSSsortingng *numberSsortingng = [formatter ssortingngFromNumber:[NSNumber numberWithFloat:22.368511]]; NSLog(@"Result...%@",numberSsortingng);//Result 22.37 

Swift 4:

 let formatter = NumberFormatter() formatter.numberStyle = .decimal formatter.maximumFractionDigits = 2 formatter.roundingMode = .up let str = Ssortingng(describing: formatter.ssortingng(from: 12.2345)!) print(str) 
  value = (round(value*100)) / 100.0; 
 [label setText:@"Value: %.2f", myNumber]; 

Vous pouvez utiliser la fonction NSDecimalRound

Dans Swift 2.0 et Xcode 7.2:

 let pi:Double = 3.14159265358979 Ssortingng(format:"%.2f", pi) 

Exemple:

entrer la description de l'image ici

Pour supprimer les décimales de votre double, regardez cette sortie

Obj C

 double hellodouble = 10.025; NSLog(@"Your value with 2 decimals: %.2f", hellodouble); NSLog(@"Your value with no decimals: %.0f", hellodouble); 

Le résultat sera:

 10.02 10 

Swift 2.1 et Xcode 7.2.1

 let hellodouble:Double = 3.14159265358979 print(Ssortingng(format:"Your value with 2 decimals: %.2f", hellodouble)) print(Ssortingng(format:"Your value with no decimals: %.0f", hellodouble)) 

Le résultat sera:

 3.14 3 

J’allais aller avec la réponse de Jason mais j’ai remarqué que dans ma version de Xcode (4.3.3) je ne pouvais pas faire ça. donc après quelques recherches, j’ai découvert qu’ils avaient récemment changé les méthodes de classe et supprimé toutes les anciennes. Alors, voici comment je devais le faire:

 NSNumberFormatter *fmt = [[NSNumberFormatter alloc] init]; [fmt setMaximumFractionDigits:2]; NSLog(@"%@", [fmt ssortingngFromNumber:[NSNumber numberWithFloat:25.342]]); 

Utilisez NSNumber * aNumber = [NSNumber numberWithDouble: number]; au lieu de NSNumber * aNumber = [NSNumber numberWithFloat: number];

 +(NSSsortingng *)roundToNearestValue:(double)number { NSNumber *aNumber = [NSNumber numberWithDouble:number]; NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init]; [numberFormatter setNumberStyle:NSNumberFormatterDecimalStyle]; [numberFormatter setUsesGroupingSeparator:NO]; [numberFormatter setMaximumFractionDigits:2]; [numberFormatter setMinimumFractionDigits:0]; NSSsortingng *ssortingng = [numberFormatter ssortingngFromNumber:aNumber]; return ssortingng; } 

Pour Swift, il existe une solution simple si vous ne pouvez pas importer Foundation, utiliser round () et / ou si vous ne voulez pas de chaîne (généralement lorsque vous êtes dans Playground):

 var number = 31.726354765 var intNumber = Int(number * 1000.0) var roundedNumber = Double(intNumber) / 1000.0 

résultat: 31.726

Vous pourriez faire ceci:

 NSNumberFormatter* f = [[NSNumberFormatter alloc] init]; [f setNumberStyle:NSNumberFormatterDecimalStyle]; [f setFormat:@0.00"]; // test NSNumber* a = @12; NSSsortingng* s = [f ssortingngFromNumber:a]; NSLog(@"%@", s);