Frage

Mein Code sieht wie folgt aus

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

der Wert aus dem Textfeld ist eigentlich eine Telefonnummer. Es ist gespeichert in NSNumber als eine lästige (2.0) 78966e + 08

Wie kann ich NSNumber nur bekommen speichern es als 0207896608?

War es hilfreich?

Lösung

Die wissenschaftliche Notation wird im Mai Computersprachen als Standard-Ausgabe von sehr großen (oder sehr klein) Zahlen verwendet. Wenn Sie die Zahl ausgegeben werden als Dezimalzahl wollen, müssen Sie das Ausgabeformat angeben (die Implementierung variiert je nach Sprache).

Auch julesjacobs ist richtig. Sie sollten nicht Schwimmers für eine Telefonnummer verwenden, wie es in binäre Rundungsfehler unterliegt. Mit INT oder STRING finden Sie viele Kopfschmerzen speichern.

Andere Tipps

Ich denke, dass die Grundidee einer Telefonnummer in eine NSNumber zu speichern ist fehlerhaft:

  • Wie unterscheiden Sie zwischen den Zahlen mit oder ohne führende 0?
  • Wie lagern Sie Telefonnummern aus dem Ausland?

würde ich NSString anstelle von NSNumber verwenden.

Nur weil es sich um eine Zahl genannt eine „Telefonnummer“ bedeutet nicht eine Zahl im gleichen Sinne, dass „5“ oder „pi“ sind.

Entweder sollten Sie eine Telefonnummer als String behandeln, oder sollten Sie eine Modellklasse Telephone erstellen jedes darzustellen.

Betrachten

, dass es Orte in der Welt, wo Zahlen haben keine führenden 0-en und wo eine Zahl mit einer führenden 0 ist nicht das gleiche wie die gleiche Zahl ohne führende 0.

05843924 != 5843924
faul mit, dass NSNumber Hacks

So stoppen und Ihre eigene Telefonnummer Klasse bauen.

Wenn Sie müssen in der Lage sein, damit umzugehen, wie Zahlen vielleicht sollten Sie es brechen in seine Teile, und speichern Sie jeden Teil als Integer.

01112223333
country code 0
area code 111
prefix 222
number 3333

Oder Sie könnten das Ganze als einen String speichern, wenn Sie es nicht manipulieren müssen.

Speichern Sie eine Telefonnummer in einem Schwimmer? Sie sollten mit einem Integer oder String betrachten. Vielleicht:

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

Hallo Leute, was denken Sie über dieses, Es scheint meine Zwecke Voll füllen. Nur in Großbritannien im Moment wird Sorge so über Lokalisierung, wenn ich eine Chance bekommen.

Ich benutze dies zu erhalten, um die Nummer zu speichern

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

Und diese Methode formatiert meine Telefonnummer und übernimmt die vorhergehenden 0 genannt.

-(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; 
    }
}

Vielen Dank für alle Kommentare. Ich markieren werde die Antwort als wer NSString vorgeschlagen, wie ich fürchte, dass ich zu verwenden NSString für diese statt meiner oben Abhilfe zufällt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top