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 之类的值,然后设为 -3​​4.658939 或 -23。有没有人有办法做到这一点?

4

2 回答 2

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 回答
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 回答