Tengo un valor doble como 22.368511 Quiero redondearlo a 2 lugares decimales. es decir, debería devolver 22,37
¿Cómo puedo hacer eso?
iphone
objective-c
cocoa-touch
testndtv
fuente
fuente
Respuestas:
Como en la mayoría de los idiomas, el formato es
%.2f
puedes ver más ejemplos aquí
Editar : También recibí esto si le preocupa la visualización del punto en los 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]]); }
fuente
setPositiveFormat:
, porque elsetFormat:
método no existía (definido solo para Mac), pero aún así, excelente respuesta, me ahorré horas de experimentar, así que +1 yPuede usar el siguiente código para formatearlo a dos lugares 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
Rápido 4:
let formatter = NumberFormatter() formatter.numberStyle = .decimal formatter.maximumFractionDigits = 2 formatter.roundingMode = .up let str = String(describing: formatter.string(from: 12.2345)!) print(str)
fuente
value = (round(value*100)) / 100.0;
fuente
[label setText:@"Value: %.2f", myNumber];
fuente
En Swift 2.0 y Xcode 7.2:
let pi:Double = 3.14159265358979 String(format:"%.2f", pi)
Ejemplo:
fuente
Puede utilizar la función NSDecimalRound
fuente
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);
La salida 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))
La salida será:
3.14 3
fuente
Iba a seguir la respuesta de Jason, pero me di cuenta de que en Mi versión de Xcode (4.3.3) no podía hacer eso. así que después de investigar un poco, descubrí que habían cambiado recientemente 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]]);
fuente
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; }
fuente
Para Swift, hay una solución simple si no puede importar Foundation, use round () y / o no quiere una String (generalmente es el caso cuando está en Playground):
var number = 31.726354765 var intNumber = Int(number * 1000.0) var roundedNumber = Double(intNumber) / 1000.0
resultado: 31.726
fuente
Utilizo la solución publicada por Umberto Raimondi extendiendo el tipo Double:
extension Double { func roundTo(places:Int) -> Double { let divisor = pow(10.0, Double(places)) return (self * divisor).rounded() / divisor } }
fuente
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);
fuente