objective framework entre diferencias iphone objective-c cocoa-touch

iphone - framework - Valor doble redondo a 2 decimales



objective c vs swift (11)

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

%.2f

puedes ver más ejemplos here

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

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

¿Cómo puedo hacer eso?


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


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


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


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


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)



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


En Swift 2.0 y Xcode 7.2:

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

Ejemplo:


value = (round(value*100)) / 100.0;


[label setText:@"Value: %.2f", myNumber];