0

これは奇妙な出力です。毎回アラート ビューをトリガーしているように見えnum1ます0.50

[計算] をクリックすると、アラート フィールドがトリガーされ、さらにがnum1に設定され、総コストは常に のようです。0.00tcost0

これは今までにないことです。

出力のタイプは、a0.23などである必要があります。tcostアラート フィールドの理由は、ユーザーがフィールドに入力していない場合にトラップできるようにするためです。

(void)textFieldDidEndEditing:(UITextField *)textField
{
    CGRect viewFrame = self.view.frame;
    viewFrame.origin.y += animatedDistance;
    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationBeginsFromCurrentState:YES];
    [UIView setAnimationDuration:KEYBOARD_ANIMATION_DURATION];
    [self.view setFrame:viewFrame];
    [UIView commitAnimations];

    if (textField1) {

        NSString *txt = self.textField1.text;
        double num1 = [txt doubleValue];
        double tCost = num1/100;

        NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
        [numberFormatter setNumberStyle: NSNumberFormatterCurrencyStyle];
        [numberFormatter setMaximumFractionDigits:3];
        [numberFormatter setRoundingMode: NSNumberFormatterRoundUp];
        NSString *numberString = [numberFormatter stringFromNumber:[NSNumber numberWithFloat:tCost]];

        self.textField1.text = [NSString stringWithFormat:@"%@",numberString];
    }
}

(IBAction)calculateCost:(UIButton *)sender {
    NSString *rate = self.textField1.text;
    NSString *wat = self.textField2.text;
    NSString *hours = self.textField3.text;
    NSString *Days = self.textField4.text;

    long double num1 = [rate doubleValue];
    long double num2 = [wat doubleValue];
    long double num3 = [hours doubleValue];
    long double num4 = [Days doubleValue];

    //double num12 = num1 /10000;

    double appKw = num2 / 1000;
    double costKwph = appKw *num1;

    double tCost = ((num4 * num3) * costKwph);

    if (num2 == 0||  num1 <= 0.000|| num3 == 0 || num4 == 0) {
        self.textField5.text = 0;

        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"oops" message:@"you must fill in all fields" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"OK",nil];

        [alert show];
    }

    tCost = tCost / 100;

    NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];

    [numberFormatter setNumberStyle: NSNumberFormatterCurrencyStyle];
    [numberFormatter setMaximumFractionDigits:4];


    NSString *numberAsString = [numberFormatter stringFromNumber:[NSNumber numberWithFloat:tCost]];

    self.textField5.text = [NSString stringWithFormat:@"%@",numberAsString];
}
4

2 に答える 2

0
if (textField == self.textField1) {
      NSNumberFormatter *nFormatter = [[NSNumberFormatter alloc] init];
      [nFormatter setNumberStyle: NSNumberFormatterCurrencyStyle];
      self.textField1.text = [nFormatter stringFromNumber:[NSNumber numberWithFloat:     [self.textField1.text doubleValue] / 100]];
    }

通貨からフロートを抽出することはできないため、textField5 の結果がゼロになるのはなぜですか。上記をフォーマットして対応するラベルに出力し、ユーザーがフォーマットされた文字列をそのように表示できるようにします。

if (textField == self.textField1) {
    NSNumberFormatter *nFormatter = [[NSNumberFormatter alloc] init];
    [nFormatter setNumberStyle: NSNumberFormatterCurrencyStyle];
    self.labeltest.text = [nFormatter stringFromNumber:[NSNumber numberWithFloat: [self.textField1.text doubleValue] /100]];
于 2013-05-13T19:19:58.407 に答える
0

NSNumber で textField を変換してみてください。次に例を示します。

NSNumberFormatter * f = [[NSNumberFormatter alloc] init];
[f setNumberStyle:NSNumberFormatterDecimalStyle];
NSNumber * num1 = [f numberFromString:self.textField1.text];
于 2013-05-13T11:26:21.363 に答える