如何更改小数位数并添加小数点按钮iPhone计算器?

时间:2011-09-23 11:57:25

标签: iphone xcode calculator

所以,请看下面的代码 - 我的第一个问题是,我怎样才能使它只有0,1或2个小数位,或者让它自动有多少小数位?第二个问题是,如何在计算器中添加小数点?它有+ - / *,我该如何添加小数点按钮?我使用的教程是http://www.youtube.com/watch?v=Ihw0cfNOrr4,这是我的代码 -

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
<。> <。>

 #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;

}

3 个答案:

答案 0 :(得分:2)

你可以在输出上使用它。

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

答案 1 :(得分: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),如果你有一个方法来改变它,然后用我自己的方法名称替换我的方法名。

关于显示器,因为我使用的是与您相比不同的方法,我无法在这方面提供任何帮助或指导。

答案 2 :(得分: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

希望这会有所帮助..这包括按钮中的小数点......