1

UItextfieldの数値入力に正/負のボタンを追加しようとしていますが、正しく機能させることができません。私がやりたいのは、数値入力の前に負の符号を追加または削除することです。それはできますが、元の小数点以下の桁数を維持する方法が見つかりません。これは私が試したことです:

- (IBAction) negsign
{
    float input = [userinput.text floatValue];
    float result = ((input * (-1)));
    negstring = [NSString stringWithFormat:
                          @"%f", result];
    userinput.text = negstring;
}

これにより、-23.0000000のように、後にゼロの文字列が表示されます。@ "%。2f"に変更して小数点以下の桁数を制限しようとしましたが、整数全体に余分なゼロを使用したり、小数点以下2桁を超えて四捨五入したりしたくありません。34.658939または23のようなものを取り、-34.658939または-23にします。誰かがこれを行う方法を持っていますか?

4

2 に答える 2

1

あなたの場合に最もよく機能するのは、次のコードです。

float input = [userinput.text floatValue];
float result = ((input * (-1)));
NSNumber *resultNum = [NSNumber numberWithFloat:result];
NSString *resultString = [resultObj stringValue];
userinput.text = resultString;

符号を逆にするのではなく、数値を負にしようとしている場合は、次のように置き換えるfloat result = ((input * (-1)));とよいでしょう。float result = -ABS(input);

于 2012-05-01T22:31:02.773 に答える
1

実際、これを処理する最善の方法は、そもそも文字列から変換しないことです。必要に応じて、次のように最初の文字を置き換えるだけです。

- (IBAction) negsign
{
    unichar firstCharacter = [userinput.text characterAtIndex:0];
    if (firstCharacter == '-') {
        // Change the first character to a + sign.
        userinput.text = [userinput.text stringByReplacingCharactersInRange:NSMakeRange(0, 1) 
                                                                 withString:@"+"];
    } else if (firstCharacter == '+') {
        // Change the first character to a - sign.
        userinput.text = [userinput.text stringByReplacingCharactersInRange:NSMakeRange(0, 1) 
                                                                 withString:@"-"];
    } else {
        // There is no sign so we assume that it is positive.  
        // Insert the - at the beginning.
        userinput.text = [userinput.text stringByReplacingCharactersInRange:NSMakeRange(0, 0) 
                                                                 withString:@"-"];
    }
}
于 2012-05-01T22:57:10.997 に答える