Valor duplo redondo para 2 casas decimais

Eu tenho um valor duplo como 22.368511 eu quero arredondá-lo para 2 casas decimais. ou seja, deve retornar 22,37

Como eu posso fazer isso?

Como na maioria das linguagens, o formato é

%.2f 

você pode ver mais exemplos aqui


Edit : Eu também tenho isso, se você está preocupado com a exibição do ponto em 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 

Você pode usar o código abaixo para formatá-lo em duas casas decimais

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

Você pode usar a function NSDecimalRound

No Swift 2.0 e no Xcode 7.2:

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

Exemplo:

insira a descrição da imagem aqui

Para remover os decimais do seu dobro, dê uma olhada nesta saída

Obj C

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

A saída será:

 10.02 10 

Swift 2.1 e 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)) 

A saída será:

 3.14 3 

Eu estava indo para ir com a resposta de Jason, mas notei que na minha versão do Xcode (4.3.3) eu não poderia fazer isso. Então, depois de um pouco de pesquisa, descobri que eles haviam recentemente mudado os methods de class e removido todos os antigos. então aqui está como eu tive que fazer isso:

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

Use NSNumber * aNumber = [NSNumber numberWithDouble: number]; em vez 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 o Swift, há uma solução simples se você não puder importar o Foundation, usar round () e / ou não desejar um String (geralmente o caso quando estiver no Playground):

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

resultado: 31,726

Você poderia fazer isso:

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