2011-09-19 82 views
2

我已经阅读了堆栈溢出中的很多问题,我想要的是删除小数后面的两个或两个以上的尾零。即:删除多于2尾零

12.00 ==> 12 
12.30 ==> 12.30 
12.35 ==> 12.35 
12.345678 ==> 12.34 
+0

的语言/技术你在用吗? – Kent

+0

'iPhone'标签,所以我假设的OBJ-C /可可 – Alex

+0

可能是这可以帮助你.. http://stackoverflow.com/questions/829067/how-can-i-round-a浮点值到2位十进制位置 – Ballu

回答

9
NSNumberFormatter *twoDecimalPlacesFormatter = [[[NSNumberFormatter alloc] init] autorelease]; 
[twoDecimalPlacesFormatter setMaximumFractionDigits:2]; 
[twoDecimalPlacesFormatter setMinimumFractionDigits:0]; 

return [twoDecimalPlacesFormatter stringFromNumber:number]; 
0

尝试:

NSLog(@"%0.2f", 12.345678); 

或将其保存到一个NSString:

NSString *numberString = [NSString stringWithFormat:@"%0.2f", 12.345678]; 

编辑

错过了事实,你不希望任何零小数位。积分为这一个@dorada:

NSNumber *number = [NSNumber numberWithFloat:12.00]; 
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init]; 
[formatter setMaximumFractionDigits:2]; 
[formatter setMinimumFractionDigits:0]; 

NSString *numberString = [formatter stringFromNumber:number]; 
[formatter release]; 
+0

结果为真12.34但是如果NSLog(@“%0.2f”,12.00);结果也将是12.00 12是期望值 – Lunayo

+0

对不起,错过了你不想要的零分数位。 @ Dorada的答案应该可以帮到你! – hwaxxer

3

我喜欢@多拉达的答案,这里是一个完整的测试:

NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init]; 
[formatter setMaximumFractionDigits:2]; 
[formatter setMinimumFractionDigits:0]; 

NSLog(@"12.00 ==> %@", [formatter stringFromNumber:[NSNumber numberWithFloat:12.00]]); 
NSLog(@"12.30 ==> %@", [formatter stringFromNumber:[NSNumber numberWithFloat:12.30]]); 
NSLog(@"12.35 ==> %@", [formatter stringFromNumber:[NSNumber numberWithFloat:12.35]]); 
NSLog(@"12.345678 ==> %@", [formatter stringFromNumber:[NSNumber numberWithFloat:12.345678]]); 

的NSLog输出:

12.00 ==> 12 
12.30 ==> 12.3 
12.35 ==> 12.35 
12.345678 ==> 12.35