2017-10-13 10 views
1

안녕하십니까. 사용자가 응용 프로그램에서 입력 한 10 진수 형식을 지정해야합니다.형식으로 NSNumberFormatter를 사용하여 십진수를 입력하십시오.

100. = 100 
90.00 = 90 
90.1 = 90.1 
90.22 = 90.22 
90.227 = 90.23 

NSNumberFormatter를 사용하여 어떻게해야합니까?

내가 내가 코드를 consize해야 할 다른 조건

if ([cell.textField.text rangeOfString:@"."].location != NSNotFound) 
    { 
     NSString *strAfterDecimal = [cell.textField.text componentsSeparatedByString:@"."].lastObject; 
     NSInteger count = [strAfterDecimal length]; 

     if(count == 0) 
     { 
      customField.value = [cell.textField.text 
           stringByReplacingOccurrencesOfString:@"." withString:@""]; 
     } 
     else if(count == 1 || count == 2) 
     { 
      if([strAfterDecimal integerValue] > 0) 
      { 
       customField.value = cell.textField.text; 
      } 
      else 
      { 
       customField.value = [cell.textField.text componentsSeparatedByString:@"."].firstObject; 
      } 
     } 
     else if(count > 2) 
     { 
      if([strAfterDecimal integerValue] > 0) 
      { 
       customField.value = [NSString stringWithFormat:@"%0.2f",[cell.textField.text floatValue]]; 
      } 
      else 
      { 
       customField.value = [cell.textField.text componentsSeparatedByString:@"."].firstObject; 
      } 
     } 
    } 

경우이 사용자 정의를 사용하여 동일한 달성했다. 클라이언트에 따라 내가 추가 코드를 넣어 캔트 애플에 의해 주어진 기본 기능 그것은

NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init]; 
formatter.maximumFractionDigits = 2; 
NSNumber *number = [formatter numberFromString:cell.textField.text]; 
NSString *numberString = [formatter stringFromNumber:number]; 
if (numberString == nil) numberString = @"0"; 
NSLog(@"%@", numberString); 

스위프트 버전 매우 간단합니다

답변

2

것들이 안전하게 선택적 항목 랩을 해제해야하기 때문에 좀 더 복잡 할 경우

let formatter = NumberFormatter() 
formatter.maximumFractionDigits = 2 
let numberString : String 
if let text = cell.textField.text, 
    let number = formatter.number(from: text), 
    let string = formatter.string(from: number) { 
    numberString = string 
} else { 
    numberString = "0" 
} 
print(numberString) 
+0

"90.00 = 90"입니까? – sketchyTech

+0

@sketchyTech 그렇습니다 – vadian

+0

고마워요 @vadian. 그것은 내 하루를 구했다. 내 요구 사항에 따라 작동합니다. 다시 한번 감사드립니다. :) –