2012-09-04 6 views
0

안녕하세요 저는 100으로 최소값과 400으로 최대 값이 있습니다. 사용자는이 값을 입력해야합니다. 그들이 400.5를 입력하면 받아 들여서는 안된다. 그게 내 텍스트 필드에 대한 유효성 검사입니다. 다음 코드를 사용했습니다.iPhone에서 정수와 소수 값을 비교하는 방법은 무엇입니까?

NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init]; 
       [formatter setNumberStyle:NSNumberFormatterDecimalStyle]; 
       NSNumber *textFieldNumber = [formatter numberFromString:[dynamicHealthyHeartTxtFld text]]; 
       NSNumber *MaxNumber = [formatter numberFromString:[[healthyHeartFieldsAry objectAtIndex:getHHTag] objectForKey:@"MaxVal"]]; 
       NSNumber *MinNumber = [formatter numberFromString:[[healthyHeartFieldsAry objectAtIndex:getHHTag] objectForKey:@"MinVal"]]; 


       if ([self checkForDecimalValue:dynamicHealthyHeartTxtFld.text]) 
       { 





        if (([textFieldNumber decimalValue] < [MinNumber decimalValue]) || ([textFieldNumber decimalValue] > [MaxNumber decimalValue])) { 

         if ([textFieldNumber decimalValue] < [MinNumber decimalValue]) { 

          Custom_Alert *alert=[[Custom_Alert alloc] initWithTitle:@"Alert" message:[NSString stringWithFormat:@"The Value you entered in %@ is outside the acceptable range.Please correct and Continue ",[[healthyHeartFieldsAry objectAtIndex:getHHTag] objectForKey:@"TestName"]] delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil]; 
          [alert show]; 
          enterAlert=YES; 
          [alert release]; 

         } 
         else 
         { 
          Custom_Alert *alert=[[Custom_Alert alloc] initWithTitle:@"Alert" message:[NSString stringWithFormat:@"The Value you entered is %@ outside the acceptable range.Please correct and Continue",[[healthyHeartFieldsAry objectAtIndex:getHHTag] objectForKey:@"TestName"]] delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil]; 
          [alert show]; 
          enterAlert=YES; 
          [alert release]; 

         } 

        } 


       } 

이 코드를 사용하는 경우 다음 코드를 사용합니다. 그것은 400.5를 받아들입니다. pls이 문제를 해결하는 데 도움이됩니다.

+0

* * 소수점 또는 100-400 범위의 소수만 허용해야합니까? – woz

+0

수락 할 수 있습니다. 101.1을 수락 할 수 있지만 400.99를 받아 들여서는 안됩니다. 400.99가 400보다 크기 때문에 400보다 큰 값을 받아 들여서는 안됩니다. –

+0

100에서 400 범위의 소수를 받아 들일 수 있습니다 –

답변

2

당신은 NSNumber에 텍스트 필드에 의해 반환 된 NSString을 변환해야합니다

NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init]; 
[formatter setNumberStyle:NSNumberFormatterDecimalStyle]; 
NSNumber *textFieldNumber = [formatter numberFromString:[textField text]]; 

그런 다음 범위를 확인하기 위해

[textFieldNumber decimalValue] > 100.0 && [textFieldNumber decimalValue] < 400 

를 사용합니다.

+0

나는 이것을 사용했다. 하지만 이진 exp 잘못된 피연산자로 오류가 발생합니다. 비교를 위해 nsnumber를 수락하지 않습니다. \t if (([textFieldNumber decimalValue] <[MinNumber decimalValue]) || ([textFieldNumber decimalValue]> [MaxNumber decimalValue])) { –

+0

이 때 사용했던 정확한 코드를 게시 할 수 있습니까? – woz

+0

나는 게시 할 것이다. –

0

나는 (textfield.text) 문자열을 double 값으로 변환했으며 double 값을 double 값과 비교합니다. 그것은 잘 작동합니다. 모든 답변에 감사드립니다.

관련 문제