我正在通過向標準計算器添加十分需要的小數選項來添加到當前正在運行的應用程序。我一直在努力尋找一種方法來做到這一點。我終於找到了今天實現小數的方法。問題是我得到的錯誤,所以我不能建立它,看看它是否工作。有人可以告訴我如何解決我遇到的錯誤嗎?或者更好的方法來實現小數?計算器應用程序實現方法的小數
這裏是我的代碼:
.h文件中:
//
// ViewController.h
// CalculatorPlus
//
// Created by William Harris on 12/20/14.
// Copyright (c) 2014 William Harris. All rights reserved.
//
#import <UIKit/UIKit.h>
#import <iAd/iAd.h>
#import <StoreKit/StoreKit.h>
#import "Calculator.h"
#import "ViewController2.h"
#import "ViewController3.h"
#import "ViewController4.h"
@class ViewController;
@interface ViewController : UIViewController <UIActionSheetDelegate, ADBannerViewDelegate> {
float result;
IBOutlet UILabel *calculatorScreen;
NSInteger currentOperation;
float currentNumber;
}
@property (strong, nonatomic) IBOutlet UILabel *calculatorScreen;
@property (strong, nonatomic) IBOutlet ADBannerView *ad1;
-(IBAction)buttonDigitPressed:(id)sender;
-(IBAction)buttonOperationPressed:(id)sender;
-(IBAction)cancelInput:(id)sender;
-(IBAction)cancelOperation:(id)sender;
-(IBAction)changeCalculatorTapped:(id)sender;
@end
.m文件:
//
// ViewController.m
// CalculatorPlus
//
// Created by William Harris on 12/20/14.
// Copyright (c) 2014 William Harris. All rights reserved.
//
#import "ViewController.h"
NSUInteger decimalPlacesLimit = 2;
@interface ViewController()
@end
@implementation ViewController
@synthesize ad1, calculatorScreen;
-(IBAction)buttonDigitPressed:(id)sender {
currentNumber = currentNumber *10 + (float) [sender tag];
calculatorScreen.text = [NSString stringWithFormat:@"%1.2f",currentNumber];
NSRange range = [self.calculatorScreen.text rangeOfString:@"."];
BOOL canUpdateScreen = YES;
if(range.location != NSNotFound) {
if([sender tag] == 99) {
// Already got dot, cannot show another dot
canUpdateScreen = NO;
} else {
NSArray *explodedString = (NSArray*)[self.calculatorScreen.text componentsSeparatedByString:@"."];
if(explodedString[1].length >= decimalPlacesLimit) {
canUpdateScreen = NO;
}
}
}
if(canUpdateScreen) {
if([sender tag] == 99) {
self.calculatorScreen.text = [NSString stringWithFormat:@"%@%@", self.calculatorScreen.text, @"."];
} else {
self.calculatorScreen.text = [NSString stringWithFormat:@"%@%ld", self.calculatorScreen.text, (long)[sender tag]];
}
}
}
-(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:@"%1.2f",result];
if ([sender tag] == 0) result = 0;
currentOperation = [sender tag];
}
-(IBAction)cancelInput:(id)sender {
currentNumber = 0;
calculatorScreen.text = @"0";
}
-(IBAction)cancelOperation:(id)sender {
currentNumber = 0;
calculatorScreen.text = @"0";
currentOperation = 0;
}
- (void)viewDidLoad {
[super viewDidLoad];
calculatorScreen.adjustsFontSizeToFitWidth = true;
}
-(void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
錯誤消息我得到:
有人可以告訴我如何修復錯誤?或者,如果有更好的方法來實現小數?我真的需要幫助獲得小數工作。謝謝!
我滾這回原來的問題,因爲它是封閉的重複。不要完全改變你的問題,而是發佈一個新問題。 – rmaddy
這讓事情變得更加困難,但我明白。我將發佈一個新問題,也許你想回答它?解決了錯誤的@rmaddy –