将double值舍入到2位小数

我有一个双倍的价值22.368511我想四舍五入到小数点后两位。 即它应该返回22.37

我怎样才能做到这一点?

正如在大多数语言中的格式一样

%.2f 

你可以在这里看到更多的例子


编辑

如果你关心在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 

您可以使用下面的代码将其格式化为两位小数

 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 3:

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

您可以使用NSDecimalRound函数

在Swift 2.0和Xcode 7.2中:

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

例:

在这里输入图像说明

要从你的双精度去除小数点,看看这个输出

Obj C

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

输出将是:

 10.02 10 

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

输出将是:

 3.14 3 

我打算用Jason的回答,但是我注意到在我的Xcode版本(4.3.3)中,我无法做到这一点。 所以经过一番研究后,我发现他们最近改变了class级的方法,把所有的class级都删掉了。 所以这是我必须这样做的:

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

使用NSNumber * aNumber = [NSNumber numberWithDouble:number]; 而不是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; } 

对于Swift,如果你不能导入Foundation,使用round()和/或不想要一个String(通常是在Playground中)

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

结果:31.726

你可以这样做:

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