문제

내 코드는 다음과 같습니다:

NSNumber *inputToNumber = [NSNumber numberWithFloat:[textField.text floatValue]];

에서 값을 textfield 는 실제로 전화 번호입니다.에 저장 NSNumber 로(2.0)78966e+08

어떻게 그냥 NSNumber 으로 그것을 저장하는것은 0207896608?

도움이 되었습니까?

해결책

과학 표기법은 5 월 컴퓨터 언어에서 매우 큰 (또는 매우 작은) 숫자의 기본 출력으로 사용됩니다. 숫자를 소수점으로 출력하려면 출력 형식을 지정해야합니다 (구현은 언어에 따라 다릅니다.)

또한 Julesjacobs가 맞습니다. 이진 반올림 오류가 발생하므로 전화 번호에 Float를 사용해서는 안됩니다. int 또는 string을 사용하면 많은 두통이 절약됩니다.

다른 팁

전화 번호를 nsnumber에 저장하는 기본 아이디어는 다음과 같습니다.

  • 0을 유무에 관계없이 사용하거나없는 숫자를 어떻게 구별합니까?
  • 외국에서 전화 번호를 어떻게 저장합니까?

나는 nsnumber 대신에 nsstring을 사용할 것입니다.

숫자라고해서 "전화 번호"가 "5"또는 "pi"와 같은 의미의 숫자라는 것을 의미하지는 않습니다.

전화 번호를 문자열로 취급하거나 각각을 나타내는 전화기 모델 클래스를 만들어야합니다.

세계에는 숫자가 0을 이끌지 않고 0을 가진 숫자가 0이없는 동일한 숫자와 같지 않은 곳이 있다고 생각하십시오.

05843924 != 5843924

그러니 게으르지 마세요 NSNumber 자신의 전화 번호 클래스를 해킹하고 구축하십시오.

필요하신 경우에는 처리할 수 있으로 숫자는 어쩌면 당신은 그것을 휴식으로 그 부분을,그리고 상점으로 각 부분 정수입니다.

01112223333
country code 0
area code 111
prefix 222
number 3333

또는 저장할 수 있습으로 모든 것은 문자열이 필요하지 않다면을 조작 할 수 있습니다.

부유물에 전화 번호를 저장하고 있습니까? 정수 또는 문자열 사용을 고려해야합니다. 아마도:

NSNumber *inputToNumber = [NSNumber numberWithInt:[textField.text intValue]];

이봐, 당신은 이것에 대해 어떻게 생각하십니까, 그것은 내 목적을 완전히 채우는 것 같습니다. 현재 영국만이 기회가 생길 때 현지화에 대해 걱정할 것입니다.

나는 이것을 사용하여 숫자를 저장합니다

NSNumber *inputToNumber = [NSNumber numberWithLongLong:(long long)[[textField.text stringByReplacingOccurrencesOfString:@" " withString:@""] longLongValue]];

그리고이 방법은 내 전화 번호를 형식화하고 언급 된 미리 0을 관리합니다.

-(NSString *)phoneNumberString:(NSNumber *)phoneNumber {
    //Add a zero because NSNumber won't save a preceeding zero
    NSString *telephoneString = [[NSString alloc] initWithFormat:@"0%@", [phoneNumber stringValue]];

    if (telephoneString.length >= 4) {
        NSString *firstPart = [[NSString alloc] initWithString: [telephoneString substringToIndex:4]];
        NSString *secondPart = [[NSString alloc] initWithString: [telephoneString substringFromIndex:4]];

        //Add the two parts together with a space inbetween
        NSString *formattedTelephoneString = [NSString stringWithFormat:@"%@ %@", firstPart, secondPart];

        //send it back to the cellForRow TableCell Method
        [firstPart release];
        [secondPart release];
        [telephoneString release];

        return formattedTelephoneString;    
    }
    else {
        return telephoneString; 
    }
}

모든 의견에 감사드립니다. 나는 위의 해결 방법 대신 이것에 NSString을 사용하는 것으로 되돌릴 까봐 NSString을 제안한 사람으로 답을 표시 할 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top