iPhone计算器应用程序不需要的小数位数

时间:2013-08-09 21:58:03

标签: ios calculator

我最近看了一个计算器iPhone应用程序的教程。它有效,但我有一个不需要的小数位的问题,意味着我的应用程序将在我的数字后加一个点,并在它之后有6 0。我查找了如何修复此问题并尝试了我所看到的内容,但只有当我输入第一个数字时它才有效。当我单击“乘法”,“除法”,“减法”或“加法”按钮时,它们会重新出现,当它显示答案时,它包括不需要的小数。我的代码如下,请帮助我谢谢!

ViewController.h

//
//  ViewController.h
//  Simple Calculator
//
//  Created by Michael on 2013-08-08.
//  Copyright (c) 2013 com.company. All rights reserved.
//

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController {

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


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



@end

ViewController.m

//
//  ViewController.m
//  Simple Calculator
//
//  Created by Michael on 2013-08-08.
//  Copyright (c) 2013 com.company. All rights reserved.
//

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

-(IBAction)buttonDigitPressed:(id)sender {
    if (!userInTheMiddleOfEnteringDecimal)
    {
    currentNumber = currentNumber *10 + (float ) [sender tag];
    calculatorScreen.text = [NSString stringWithFormat:@"%2d",(int)currentNumber];
    }
    else{
        calculatorScreen.text= [calculatorScreen.text stringByAppendingString:[NSString stringWithFormat:@"%d",[sender tag]]];
        currentNumber = [calculatorScreen.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;
        }
    }
    currentNumber = 0;
    calculatorScreen.text = [NSString stringWithFormat:@"%2f",result];
    if ([sender tag] == 0) result=0;
    currentOperation = [sender tag];
    userInTheMiddleOfEnteringDecimal = NO;    
}

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

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

- (IBAction)dotPressed{
    if(!userInTheMiddleOfEnteringDecimal){
        userInTheMiddleOfEnteringDecimal = YES;
        calculatorScreen.text= [calculatorScreen.text stringByAppendingString:@"."];
    }
}


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

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end

谢谢:)

1 个答案:

答案 0 :(得分:0)

buttonOperationPressed:sender 方法中,您错过了格式字符串中的句点:

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

应该是     calculatorScreen.text = [NSString stringWithFormat:@“%。2f”,result];

即。 %。2f而不是%2f。

如果你想要填充,那么你可以使用%2.2f代替。

这是关于format specifiers的教程。