1

我在包含用户输入对象价格的应用程序中制作,并且该应用程序输出含税价格。但是,每次它输出 0 时,我都会收到一个涉及变量 myDouble 的运行时错误。我正在尝试将输入文本字段中的值乘以 1.06(我从设定的税率开始),然后将标签设置为新值。这是我的代码:

-(IBAction)textFieldReturn:(id)sender
{
    [sender resignFirstResponder];
    NSString *myString = inputtext2.text;
    double myDouble = [myString doubleValue];
    myDouble = myDouble*1.06;
    NSLog(@"myDouble: %lf", myDouble);
    price.text = [NSString stringWithFormat:@"%g", myDouble];
}
4

2 回答 2

1

很可能您的 inputtext2 变量为零,因此它什么也不返回。如果这是一个插座,请检查接口生成器中的连接。如果未连接出口,则变量将为nil,因此字符串值为nil,因此双精度值为 0。

于 2012-08-01T15:21:31.180 回答
0

我认为您将要使用 NSNumberFormatter 并检查有效条目。

伪代码,未编译:

-(IBAction)textFieldReturn:(id)sender
{
    [sender resignFirstResponder];
    NSString *myString = inputtext2.text;    
    NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
    [formatter setNumberStyle: NSNumberFormatterDecimalStyle];
    NSNumber *myNumber = [formatter numberFromString: myString];
    double myDouble = 0;
    if (myNumber != nil) {
      myDouble = [myNumber doubleValue];
    }

    NSString *outputString = [formatter stringFromNumber:myDouble];
    price.text = outputString;
}

如果输入的文本为 0 或不是有效数字,这应该默认您的数字为 0。

于 2012-08-01T14:21:41.640 回答