2011-09-19 83 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