Valor doble redondo a 2 decimales

Tengo un valor doble como 22.368511 Quiero redondearlo a 2 decimales. es decir, debería devolver 22.37

¿Cómo puedo hacer eso?

Como en la mayoría de los idiomas, el formato es

%.2f 

puedes ver más ejemplos aquí


Editar : También tengo esto si le preocupa la visualización del punto en casos de 25.00

 { NSNumberFormatter *fmt = [[NSNumberFormatter alloc] init]; [fmt setPositiveFormat:@"0.##"]; NSLog(@"%@", [fmt stringFromNumber:[NSNumber numberWithFloat:25.342]]); NSLog(@"%@", [fmt stringFromNumber:[NSNumber numberWithFloat:25.3]]); NSLog(@"%@", [fmt stringFromNumber:[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 

Puede usar el siguiente código para formatearlo con dos decimales

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

Swift 4:

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

Puede usar la función NSDecimalRound

En Swift 2.0 y Xcode 7.2:

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

Ejemplo:

enter image description here

Para eliminar los decimales de su doble, eche un vistazo a esta salida

Obj C

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

El resultado será:

 10.02 10 

Swift 2.1 y Xcode 7.2.1

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

El resultado será:

 3.14 3 

Iba a ir con la respuesta de Jason, pero noté que en Mi versión de Xcode (4.3.3) no podía hacer eso. entonces, después de investigar un poco, descubrí que recientemente habían cambiado los métodos de clase y eliminado todos los antiguos. así que así es como tuve que hacerlo:

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

Use NSNumber * aNumber = [NSNumber numberWithDouble: number]; en lugar de NSNumber * aNumber = [NSNumber numberWithFloat: number];

 +(NSString *)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]; NSString *string = [numberFormatter stringFromNumber:aNumber]; return string; } 

Para Swift hay una solución simple si no puedes importar Foundation, usar round () y / o no quieres un String (generalmente el caso cuando estás en Playground):

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

resultado: 31.726

Podrías hacer esto:

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