2010-04-29 71 views
3

我想在NSString中使用浮點數。我使用stringWithFormat和%f來將我的float整合到NSString中。問題是我想只顯示一位小數(%.1f),但是當沒有小數時,我不想顯示'.0'。NSString - 浮點數的最大1位小數

我該怎麼做?

感謝

回答

3

我發現NSNumberFormatter和setMaximumFractionDigits答案,那麼:

[numberFormatter stringFromNumber:myNumber] 

感謝大家尤其是@falconcreek

1

你可以使用%G這樣

NSLog([NSString stringWithFormat: @"test: %g", (float)1.2]); 
NSLog([NSString stringWithFormat: @"test: %g", (float)1]) 
+0

不適用於1.3333333333! – ncohen 2010-04-29 20:33:42

2

您應該使用NSNumberFormatter

NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init]; 
[numberFormatter setFormat:@"#,##0.#"]; 
NSNumber *oneThousand = [NSNumber numberWithFloat:1000.0]; 
NSNumber *fivePointSevenFive = [NSNumber numberWithFloat:5.75]; 

NSLog(@"1000.0 formatted: %@", [numberFormatter stringFromNumber:oneThousand]); 
NSLog(@"5.75 formatted: %@", [numberForatter stringFromNumber:fivePointSevenFive]); 

Apple格式化編程指南中有一個鏈接指向格式化標準。 便利的參考Number Format Patterns

+0

謝謝,但我在iPhone上開發,它不支持setFormat ... – ncohen 2010-04-29 20:34:32

+0

這樣一種有用的方法。有時間向bug報告者提交功能請求。 – falconcreek 2010-04-30 13:12:13

0

NSNumberFormatter最近改變了一點點。下面是獲得兩個顯著位數四捨五入的例子:

NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init]; 
[numberFormatter setNumberStyle:NSNumberFormatterNoStyle]; 
[numberFormatter setUsesSignificantDigits:YES]; 
[numberFormatter setMaximumSignificantDigits:2]; 

而這裏的a link一個良好的,最近的資源。例如