Valore doppio arrotondato a 2 posizioni decimali

Ho un doppio valore come 22.368511 Voglio arrotondarlo a 2 cifre decimali. cioè dovrebbe restituire 22.37

Come lo posso fare?

Come nella maggior parte delle lingue, il formato è

%.2f 

puoi vedere altri esempi qui


Edit : Ho anche ottenuto questo se siete preoccupati per la visualizzazione del punto in casi di 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 

È ansible utilizzare il codice seguente per formattarlo con due cifre decimali

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

È ansible utilizzare la funzione NSDecimalRound

In Swift 2.0 e Xcode 7.2:

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

Esempio:

inserisci la descrizione dell'immagine qui

Per rimuovere i decimali dal tuo doppio, dai un’occhiata a questo output

Obj C

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

L’output sarà:

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

L’output sarà:

 3.14 3 

Stavo per andare con la risposta di Jason, ma ho notato che nella mia versione di Xcode (4.3.3) non potevo farlo. così dopo un po ‘di ricerche ho scoperto che avevano recentemente cambiato i metodi di class e rimosso tutti quelli vecchi. ecco come ho dovuto farlo:

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

Usa NSNumber * aNumber = [NSNumber numberWithDouble: number]; invece di 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; } 

Per Swift c’è una soluzione semplice se non puoi importare Foundation, usare round () e / o non vuoi una stringa (di solito quando sei in Playground):

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

risultato: 31.726

Potresti fare questo:

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