2012-05-01 3 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», но мне не нужны дополнительные нули для целых чисел или округление более чем на 2 десятичных знака. Я просто хочу взять что-то вроде 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 = ((input * (-1))); с float result = -ABS(input);

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