2013-02-13 53 views
0

我正在創建一個小型iPhone計算器,並且我已經完成了通常的操作,但唯一的問題是我的數字在小數點後面顯示六位零。所以,當我按下按鈕與標籤5,這是顯示在顯示器標籤顯示在標籤中的格式字符串

--------------- 
|  5.000000| 
--------------- 

對我只有一個看到5號無零。有什麼建議麼?

這是我有顯示按下顯示標籤上的數字代碼:

- (IBAction)digitAction:(id)sender { 
    currentNumber = currentNumber *10 + (double)[sender tag]; 
    display.text = [NSString stringWithFormat:@"%2f",currentNumber]; 
} 

我曾嘗試以下方法來格式化字符串,但它似乎並沒有工作:

而不是:@"%2f"我試過@"%f",@"%d"

回答

1

將其轉換爲整數!

display.text = [NSString stringWithFormat:@"%d",[[NSNumber numberWithFloat:currentNumber] intValue]]; 

田田!

雖然,這將是更有效地使用從一開始的整數

int currentNumber = 5; 
display.text = [NSString stringWithFormat:@"%d", currentNumber]; 

但是,這並不讓你做float division;如果這是您的代碼的必需元素,請使用第一個選項。

+1

(INT)currentNumber會做就好了,沒必要建立一個NSNumber只是這一點。 – escrafford 2013-02-13 16:57:46

+0

是的,但他目前已經是一個浮動,所以... – David 2013-02-13 16:58:21

+0

...?你認爲你通過創造一個對象來爲你四捨五入而獲得什麼? – escrafford 2013-02-13 17:09:52

0

不要設置標籤的stringValue或與printf風格的解決方案打交道,請使用NSNumberFormatter。它會讓你更好地控制數字的顯示方式。

+0

%2f比NSNumberFormatter更方便,並且這不是他的問題的原因。 – AlexWien 2013-02-13 16:56:33

1
// Change "%2f" to "%.0f" 

- (IBAction)digitAction:(id)sender { 
    currentNumber = currentNumber * 10 + (double)[sender tag]; 
    display.text = [NSString stringWithFormat:@"%.0f", currentNumber]; 
} 
1

我認爲你需要SMT更喜歡,這是有條件的:

- (IBAction)digitAction:(id)sender { 
    currentNumber = currentNumber *10 + (double)[sender tag]; 
    double integral, fraction; 
    fraction = modf(currentNumber, &integral); //This calculates the fractional part of double value 
    NSString *formatString = fraction == 0.0 ? @"%.0f" : @".3f"; // Set format string according whether you have fraction or not 
    display.text = [NSString stringWithFormat:formatString,currentNumber]; 
} 
相關問題