我开发了一个计算器,现在想在操作中添加一个小数点。到目前为止我使用的代码允许使用和显示小数点按钮,但是当我点击小数点后点击另一个数字时,小数点消失。例如:2.2变为22。
#import "ViewController.h"
@interface ViewController ()
@end
@implementation ViewController
-(IBAction)NUmber1:(id)sender{
SelectNumber = SelectNumber * 10;
SelectNumber = SelectNumber + 1;
Screen.text = [NSString stringWithFormat:@"%i", SelectNumber];
}
-(IBAction)NUmber2:(id)sender{
SelectNumber = SelectNumber * 10;
SelectNumber = SelectNumber + 2;
Screen.text = [NSString stringWithFormat:@"%i", SelectNumber];
}
-(IBAction)NUmber3:(id)sender{
SelectNumber = SelectNumber * 10;
SelectNumber = SelectNumber + 3;
Screen.text = [NSString stringWithFormat:@"%i", SelectNumber];
}
-(IBAction)NUmber4:(id)sender{
SelectNumber = SelectNumber * 10;
SelectNumber = SelectNumber + 4;
Screen.text = [NSString stringWithFormat:@"%i", SelectNumber];
}
- (IBAction)decimal:(id)sender {
NSRange range = [Screen.text rangeOfString:@"."];
if (range.location ==NSNotFound){
Screen.text = [Screen.text stringByAppendingString:@"."];
}
}
答案 0 :(得分:1)
这是基于你告诉它做的正确行为。假设您有2.然后按2. SelectNumber为2,然后乘以10得到20然后加2,所以它是22,然后将其打印为整数。当您在小数位后键入数字时,您不能再乘以10,您必须添加数字/ 10 ^(到目前为止的位数)。请注意,您必须将其保留在浮点数而不是整数。
答案 1 :(得分:0)
下面
-(IBAction)NUmber1:(id)sender{
SelectNumber = SelectNumber * 10;
SelectNumber = SelectNumber + 1;
Screen.text = [NSString stringWithFormat:@"%i", SelectNumber];
}
您正在使用新的INTEGER值删除当前字符串。尝试更改为
-(IBAction)NUmber1:(id)sender{
Screen.text = [Screen.text stringByAppendingString:@"1"];
}
您还需要更改SelectNumber
计算逻辑。我建议你在真正需要时从字符串中获取它
double SelectNumber = [Screen.text doubleValue];
答案 2 :(得分:0)
你的逻辑错了。
当你回复数字键时,你取SelectNumber
,将它乘以10并加上键的值。最后,根据刚刚计算的值更新显示。
但是,当您响应点键时,只需向显示添加一个点,就不会做任何事情来改变后续数字键的处理方式。因此,正如您所观察到的,当处理下一个数字键时,显示中的点将被忽略。
您需要计算出任何算法,以便点之后的数字具有小数值。