正/负按钮无法正常显示

时间:2012-05-01 22:16:21

标签: objective-c uitextfield ibaction

我正在尝试在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。有没有人有办法做到这一点?

2 个答案:

答案 0 :(得分: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);

会更好

答案 1 :(得分: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:@"-"];
    }
}