我正在尝试在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。有没有人有办法做到这一点?
答案 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:@"-"];
}
}