2012-09-16 31 views

回答

3
%.0f 

這意味着一個浮點數爲0的小數位。

編輯

,因爲它似乎你仍然需要一些精度,你應該使用一個NSNumberFormatter實例,它是靈活得多。

您可以使用-setMinimumFractionDigits:-setMaximumFractionDigits:,所以零會0,但你仍然可以擁有精度:

NSNumberFormatter * fmt; 

fmt = [ [ NSNumberFormatter new ] autorelease ]; 

[ fmt setMinimumFractionDigits: 0 ]; 
[ fmt setMaximumFractionDigits: 2 ]; 
[ fmt setMinimumIntegerDigits: 1 ]; 

NSLog(@"%@", [ fmt stringFromNumber: [ NSNumber numberWithFloat: (float)0 ] ]); 
NSLog(@"%@", [ fmt stringFromNumber: [ NSNumber numberWithFloat: (float)0.42 ] ]); 
+0

我仍然需要顯示一些小數精度。截斷分數並不能解決這個問題。 – amirfl

+0

請參閱編輯... – Macmade

+0

謝謝,根據您的建議,我以一種稍微不同的方式使用了NSNumberFormatter(再一次,我不想限制精度)。 NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init]; [formatter setNumberStyle:NSNumberFormatterDecimalStyle]; myTextField.text = [formatter stringFromNumber:[NSNumber numberWithDouble:self.myDoubleValue]]; 現在我試圖找出如何做逆向轉換。從2,000,000.45這樣的字符串到雙精度(我是否必須創建自己的方法來刪除格式或在可可中是否有現有方法?) 感謝您的幫助 – amirfl

0

您可以限制在格式字符串中的小數號碼:

%.0f 

將全面爲整數,

%.1f 

將舍入到小數點後1位等,打印-0分別爲-0-0.0

+0

我仍然需要保留十進制精度,但在右側清理不必要的0,' - '如果值爲0,則'。'如果沒有分數 – amirfl