标签:
-(void)viewDidLoad
{
//初始化字符串
self.num1 = [[NSMutableString alloc]init];
self.num2 = [[NSMutableString alloc]init];
self.tempStr = [[NSMutableString alloc]init];
}
//监听数字按钮0-9和点,点的tag为10
//判断输入数字前有几个0,只取一个零,小数点只取一个
-(IBAction)numbers:(id)sender
{
//处理0的问题
//以零开头,下次输入的非0,则清空0
//如果以0.开头,则不清空
if ([self.tempStr hasPrefix:@"0"] && [sender tag] > 0 && [sender tag] <10 && ![self.tempStr hasPrefix:@"0."])
{
self.tempStr = [NSMutableString stringWithString:@""];
}
else if ([self.tempStr hasPrefix:@"0"] && [sender tag] == 0 && ![self.tempStr hasPrefix:@"0."])
{
//如果是以0开头,但是不是以0.开头,则直接返回
return;
}
//处理小数点的问题
//如果小数点是第一输入的数字
if ([sender tag] == 10 && self.tempStr.length == 0)
{
self.tempStr = [NSMutableString stringWithString:@"0"];
}
//每输入一次,拼接一次字符串
if([sender tag] == 10 )//取小数点
{
//小数点只允许输入一次
//遍历字符串tempStr,如果有小数点,则直接return
for (int i = 0; i < self.tempStr.length ; i++)
{
char c = [self.tempStr characterAtIndex:i];
if (c == ‘.‘)
{
return;
}
}
[self.tempStr appendString:@"."];
}
else
{
[self.tempStr appendFormat:@"%ld",[sender tag]];
}
_show.text = self.tempStr;
}
//删除按钮
-(IBAction)deleteNums:(id)sender
{
if (_show.text.length == 1)//删除显示屏中所有的数字
{
_show.text = @"0";
//清空tempStr
self.tempStr = [NSMutableString stringWithString:@""];
return;
}
//将显示屏中的现有数字赋值给字符串
// NSMutableString *str = [[NSMutableString alloc]init];
self.tempStr =[NSMutableString stringWithFormat:@"%@", _show.text] ;
[self.tempStr deleteCharactersInRange:NSMakeRange(self.tempStr.length-1, 1)];
_show.text = self.tempStr;
}
//监听加减乘除 calculate "=" 11 "+" 12 "-" 13 "*" 14 "/" 15 正负为16 %为17
-(IBAction)calculate:(id)sender
{
//清空tempStr
self.tempStr = [NSMutableString stringWithString:@""];
if(0 == _count)//如果是第一次输入
{
_cal = [NSNumber numberWithLong:[sender tag]];
self.num1 = [NSMutableString stringWithFormat:@"%@",_show.text];
}
else//不是第一次输入,则计算
{
self.num2 = [NSMutableString stringWithFormat:@"%@", _show.text];
int calculate = [_cal intValue];
switch (calculate) {
case 12://将加后的结果显示
_show.text =[NSString stringWithFormat:@"%.2f",([self.num1 doubleValue] + [self.num2 intValue])];
break;
case 13://将减后的结果显示
_show.text =[NSString stringWithFormat:@"%.2f",([self.num1 doubleValue] - [self.num2 intValue])];
break;
case 14://将乘后的结果显示
_show.text =[NSString stringWithFormat:@"%.2f",([self.num1 doubleValue] * [self.num2 intValue])];
break;
case 15://将除后的结果显示
_show.text =[NSString stringWithFormat:@"%.2f",([self.num1 doubleValue] / [self.num2 intValue])];
break;
default:
break;
}
self.num1 = [NSMutableString stringWithFormat:@"%@", _show.text];
_cal = [NSNumber numberWithLong:[sender tag]];
}
_count = @1;
if ([sender tag] == 16 || [sender tag] == 17)//单目运算正负和%
{
switch ([sender tag]) {
case 16://将乘负后的结果显示
_show.text =[NSString stringWithFormat:@"%.2f",([self.num1 doubleValue] *(-1))];
break;
case 17://将取百分后的结果显示
_show.text =[NSString stringWithFormat:@"%.2f",([self.num1 doubleValue] / 100)];
break;
default:
break;
}
self.num1 = [NSMutableString stringWithFormat:@"%@", _show.text];
}
}
标签:
原文地址:http://blog.csdn.net/u010438187/article/details/45567387