2011-09-26 246 views
0

可能重複:
How do I change the number of decimal places iOS?
If using Xcode to make an iOS calculator, how would I add a decimal button?教程iPhone計算器小數點

我正在尋找關於如何使一個(簡單)iPhone的計算器,可以在iOS教程至少要做到以下幾點:加,減,乘,除,並讓用戶輸入小數點。我一直無法找到這樣的教程,所以如果有人知道,請告訴我。我其實可以找到一個可以加,減,乘,除的小數點,但不能做小數點。如果您可以告訴我如何讓用戶輸入小數點,則不需要進一步的教程。我現在使用的代碼如下。

在頭文件:

#import <UIKit/UIKit.h> 

@interface CalculatorViewController : UIViewController { 

float result; 
IBOutlet UILabel *calculatorScreen; 
int currentOperation; 
float currentNumber; 

} 


-(IBAction)buttonDigitPressed:(id)sender; 
-(IBAction)buttonOperationPressed:(id)sender; 
-(IBAction)cancelInput; 
-(IBAction)cancelOperation; 
主文件

#import "CalculatorViewController.h" 

@implementation CalculatorViewController 


-(IBAction)buttonDigitPressed:(id)sender { 


currentNumber = currentNumber *10 + (float)[sender tag]; 
calculatorScreen.text = [NSString stringWithFormat:@"%.1f", currentNumber]; 

}

-(IBAction)buttonOperationPressed:(id)sender { 
if (currentOperation ==0) result = currentNumber; 
else {   

    switch (currentOperation) { 
     case 1: 
      result = result + currentNumber; 
      break; 
     case 2: 
      result = result - currentNumber; 
      break; 
     case 3: 
      result = result * currentNumber; 
      break; 
     case 4: 
      result = result/currentNumber; 
      break; 
     case 5: 
      currentOperation = 0; 
      break; 

    } 
} 

currentNumber = 0; 
calculatorScreen.text = [NSString stringWithFormat:@"%.1f", result]; 
if ([sender tag] ==0) result=0; 
currentOperation = [sender tag]; 
} 



-(IBAction)cancelInput { 

currentNumber =0; 
calculatorScreen.text = @"0"; 

} 


-(IBAction)cancelOperation { 



currentNumber = 0; 
calculatorScreen.text = @"0"; 
currentOperation = 0; 

} 
+2

這是您詢問關於同一主題的第三個問題。如果你仍然不明白如何處理這個問題,你爲什麼接受這些問題的答案? – Jason

+0

這是同樣的問題,但我還沒有得到一個適合我的答案。我接受答案給那些回答了幾個名譽點的人。我仍然無法得到一個好的答案,所以這次我正在尋找一個計算器上的教程。我不知道如何刪除問題,也沒有人回答我的其他問題,所以我只是再問一次。我有點不好意思再問,但是再一次,沒有人回答其他問題。 –

+1

@iOS開發人員 - 您沒有義務接受不能解決問題的答案。如果您覺得目前的答案不符合您的真正需求,請編輯您的原始問題以使您的需求更清晰。 –

回答

1

這應該工作。簡單而直接。

更改currentNumber以存儲正在進行的計算的當前字符串值(設爲NSMutableString),爲小數點按鈕添加一個插座(buttonDecialPointPressed)。

-(IBAction) buttonDigitPressed:(id)sender 
{ 
    currentNumber = [currentNumber appendFormat:@"%d"]; 
    calculatorScreen.text = currentNumber; 
} 

- (IBAction) buttonDecialPointPressed:(id)sender 
{ 
    if(behindTheDecimal == YES) 
     return; 
    behindTheDecimal = YES; 
    currentNumber = [currentNumber appendString:@"."]; 
    calculatorScreen.text = currentNumber; 
} 

-(IBAction)buttonOperationPressed:(id)sender 
{ 
    float number = [currentNumber floatValue]; 
    switch (currentOperation) 
    { 
     case 0: 
      result = number; 
      break; 
     case 1: 
      result = result + number; 
      break; 
     case 2: 
      result = result - number; 
      break; 
     case 3: 
      result = result * number; 
      break; 
     case 4: 
      result = result/number; 
      break; 
     case 5: 
      currentOperation = 0; 
      break; 
     case 6: 
      break; 
    } 

    currentNumber = [currentNumber stringWithFormat:@"%f", result]; 
    calculatorScreen.text = currentNumber; 

    // why is this needed, how is it used? 
    currentOperation = [sender tag]; 
} 


-(IBAction)cancelInput 
{ 
    behindTheDecimal = NO; 
    currentNumber = @"0"; 
    calculatorScreen.text = currentNumber; 
} 

-(IBAction)cancelOperation 
{ 
    behindTheDecimal = NO; 
    currentNumber = @"0"; 
    calculatorScreen.text = currentNumber; 
    currentOperation = 0; 
} 
+1

除此代碼允許多個小數點條目外。您需要檢查是否已經有小數點,如果有,則忽略它。 – Jamie

+0

確實如此,對於簡單的情況是固定的。 – EricLeaf