2012-05-01 44 views
1

我想在UItextfield的数值输入上添加一个正/负按钮,但我无法正常工作。我想要它做的只是从数字输入的前面添加或删除一个负号。我能够做到这一点,但我找不到保持原始小数位数的方法。这是我曾尝试过的:肯定/否定按钮无法正常显示

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

用这个,我得到一串零后,就像-23.0000000。我试图通过更改为@“%2f”来限制小数位数,但我不想为整数整数或额外舍入两个以上的小数位数。我只是想要它采取像34.658939或23,并使其为-34.658939或-23。有没有人有办法做到这一点?

+0

这个问题涉及的花车格式:[更正浮点数(http://stackoverflow.com/questions/10049533/correcting-floating-point-numbers) – lnafziger

回答

1

什么工作最好在你的情况是下面的代码:

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

如果你想使负号,而不是反转的标志,它会更好,如果你有float result = -ABS(input);替换float result = ((input * (-1)));

+0

非常感谢这两个答案真的有帮助,我能够让它正常工作! – user1123878

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:@"-"]; 
    } 
}