2011-09-23 742 views
1

因此,請看下面的代碼 - 我的第一個問題是,我怎樣才能使它只有0,1或2個小數位,或者讓它自動有多少個小數位?第二個問題是,我如何將一個十進制按鈕添加到計算器?它有+ -/*,我將如何添加一個小數點按鈕?教程中,我使用的是這裏http://www.youtube.com/watch?v=Ihw0cfNOrr4,這裏是我的代碼 -如何更改小數位數並添加小數點按鈕iPhone計算器?

viewcontroller.h

#import <UIKit/UIKit.h> 

@interface calcViewController : UIViewController { 

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

} 


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



@end 

在.M

#import "calcViewController.h" 

@implementation calcViewController 



-(IBAction)buttonDigitPressed:(id)sender { 


currentNumber = currentNumber *10 + (float)[sender tag]; 
calculatorScreen.text = [NSString stringWithFormat:@"%2f", 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:@"%2f", 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; 

} 
+0

如果有人能幫忙,我會很感激。 –

回答

2

您可以在輸出時使用此。

Float *number = 2.2f; 
NSLog(@"%.2f",number); 
+0

無論你想在那裏顯示輸出,你需要使用%.2f – Tendulkar

0

您想要關注點的另一件事是您不想在計算中有多個點, 10.345.1123.5。簡而言之,你希望它也是一個合法的浮點數。

雖這麼說,你可以使用一個IBAction爲(記得要鏈接到你的故事板或XIB文件)

-(IBAction)decimalPressed:(UIButton *)sender 
{ 
NSRange range = [self.display.text rangeOfString:@"."]; 
if (range.location ==NSNotFound){ 
self.display.text = [ self.display.text stringByAppendingString:@"."]; 
} 
self.userIsInTheMiddleOfEnteringANumber = YES; 
} 

雖然有可能,我們都在做同一個項目,它也可能是完全不同的(你自己從頭開始),所以我會通過一些代碼

你可以用默認的id替換UIButton,但是最好是靜態替換它來爲你自己或任何其他人查看您的代碼。

NSRange顧名思義,標記範圍,範圍將顯示計算文本(例如1235.3568),並且在這種情況下它所針對的字符串範圍爲「。」。因此,如果在文本範圍內未找到NSNotfound(rangeOfString「。」),則會將當前顯示文本附加「。」。與函數stringByAppendingString:@「。」,沒有別的,所以沒有函數將發生如果「。」已經被發現,這解決了顯示器上多點的問題。

userIsInTheMiddleOfEnteringANumber是一個BOOL,用於解決在你的顯示中有0的問題(例如06357),如果你有一個方法來改變它,然後用你自己的方法替換我的方法名稱。

關於顯示器,由於我使用的是與您的不同方法,因此我無法給予任何幫助或指導。

0

這是我的解決方案:

ViewController.h

#import <UIKit/UIKit.h> 

@interface ViewController : UIViewController { 
    float result; 
    IBOutlet UILabel *TextInput; 
    int currentOperation; 
    float currentNumber; 
    BOOL userInTheMiddleOfEnteringDecimal; 
} 

- (IBAction)buttonDigitPressed:(id)sender; 
- (IBAction)buttonOperationPressed:(id)sender; 
- (IBAction)cancelInput; 
- (IBAction)cancelOperation; 
- (IBAction)dotPressed; 
@end 

Viewcontroller.m

#import "ViewController.h" 

@interface ViewController() 


@end 

@implementation ViewController 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view, typically from a nib. 
} 

- (void)didReceiveMemoryWarning 
{ 
    [super didReceiveMemoryWarning]; 
} 

- (IBAction)buttonDigitPressed:(id)sender { 
    if(!userInTheMiddleOfEnteringDecimal) 
    { 
     currentNumber = currentNumber*10 + (float)[sender tag]; 
     TextInput.text = [NSString stringWithFormat:@"%d",(int)currentNumber]; 
    } 
    else{ 
     TextInput.text= [TextInput.text stringByAppendingString:[NSString stringWithFormat:@"%d",[sender tag]]]; 
     currentNumber = [TextInput.text floatValue]; 
    } 
} 

- (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; 
      default: 
       break; 
     } 
    } 
    currentNumber = 0; 
    TextInput.text = [NSString stringWithFormat:@"%.2f",result]; 
    if ([sender tag] == 0) result = 0; 
    currentOperation = [sender tag]; 
    userInTheMiddleOfEnteringDecimal = NO; 
} 

-(IBAction)cancelInput{ 
    currentNumber = (int)(currentNumber/10); 
    TextInput.text = [NSString stringWithFormat:@"%.2f",currentNumber];; 
} 

-(IBAction)cancelOperation{ 
    currentNumber = 0; 
    TextInput.text = @"0"; 
    userInTheMiddleOfEnteringDecimal = NO; 
} 
- (IBAction)dotPressed{ 
    if(!userInTheMiddleOfEnteringDecimal){ 
     userInTheMiddleOfEnteringDecimal = YES; 
     TextInput.text= [TextInput.text stringByAppendingString:@"."]; 
    } 
} 

@end 

希望這有助於。這包括在按鈕小數點...