[ios]为我的计算器添加小数点

标签: Xcode ios
发布时间: 2017/3/28 21:09:36
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我试图使一个计算器。一切工作正常,但现在我想要添加一个小数点和我不知道如何。你能帮我吗?谢谢。

我试过这

- (IBAction) buttondecimal {
    SelectNumber = SelectNumber * 10;
    SelectNumber = SelectNumber + @".";
    Screen.text = [NSString stringWithFormat: @"%0.f", SelectNumber]; }

但我得到一个错误︰ 无效操作数为二进制表达式 ('双重' 和 ' NSString *')

这里是我的代码︰

.h

#import <UIKit/UIKit.h>

int Method;
double SelectNumber;
double RunningTotal;

@interface KalkulackaViewController : UIViewController
{
IBOutlet UILabel *deglabel;
IBOutlet UIButton *degbutton;
IBOutlet UITextField *Screen;
}

-(IBAction)Number1:(id)sender;
-(IBAction)Nasobeni:(id)sender;
-(IBAction)Deleni:(id)sender;
-(IBAction)Minus:(id)sender;
-(IBAction)Plus:(id)sender;
-(IBAction)Rovnase:(id)sender;
-(IBAction)AllClear:(id)sender;

@end

.m

#import "KalkulackaViewController.h"

@interface KalkulackaViewController ()

@end

@implementation KalkulackaViewController


- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
    }
    return self;
}

- (void)viewDidLoad
{
    [super viewDidLoad];

    UIView *paddingView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 10,10)];
    Screen.rightView = paddingView;
    Screen.rightViewMode = UITextFieldViewModeAlways;
    Screen.leftView = paddingView;
    Screen.leftViewMode = UITextFieldViewModeAlways;
}
-(IBAction)Number1:(id)sender
{
    SelectNumber = SelectNumber * 10;
    SelectNumber = SelectNumber + 1;
    Screen.text = [NSString stringWithFormat:@"%0.f", SelectNumber];
}
- (IBAction) buttondecimal
{

}

解决方法 1:

SelectNumberdouble ,不能将字符串添加到它像您正在使用 @"."

你最有可能去做是只存储在字符串中的值 (而不是在 SelectNumber )。例如,如果您要添加数字"1"在计算器这样︰

Screen.text = [Screen.text stringByAppendingString:@"1"];

这同样适用于小数点 (虽然你应该检查它是否已经包含一个十进制数)︰

if ([screen.text rangeOfString:@"."].location == NSNotFound) {
    screen.text = [screen.text stringByAppendingString:@"."];
}

然后,若要获取实际计算的值的字符串,你可以只使用 doubleValue :

double value = [screen.text doubleValue];

这样做的这也给你的能力如果你想添加一个退格键︰

if (screen.text.length > 0) {
    screen.text = [screen.text substringToIndex:screen.text.length - 1];
}

此外,旁注︰ 你不应该命名变量以大写字母开头。驼峰匹配是标准为objective-c (并且一般来说接受)。示例︰ runningTotalselectNumber 。一样的函数名称,等等。最主要的原因是,以大写字母开头的东西一般是类名,所以这提高了可读性,并可以减少混乱。

官方微信
官方QQ群
31647020