Was ist eine ungültige Oktalziffer?

8

Ich versuche, ein Array von Postleitzahlen zu erstellen.

%Vor%

Dies gibt zurück:

%Vor%

Nie zuvor gesehen. Irgendwelche Problemumgehungen?

    
Trip 05.03.2011, 19:48
quelle

3 Antworten

18

Ruby interpretiert Zahlen mit einer führenden 0 als oktal (Basis 8). Daher sind die Ziffern 8 und 9 nicht gültig.

Es ist wahrscheinlich sinnvoller, Postleitzahlen als Zeichenfolgen anstatt als Zahlen zu speichern (um zu vermeiden, dass bei der Anzeige immer Nullen aufgefüllt werden müssen): array = ["07001", "07920"]

    
Yuliy 05.03.2011, 19:52
quelle
3

Ihr Array besteht aus Zahlen, so dass die führende Null als oktal interpretiert wird (gültige Ziffern 0-7). Wenn dies Postleitzahlen sind und die führende Null signifikant ist, sollten sie wahrscheinlich Zeichenfolgen sein.

    
developmentalinsanity 05.03.2011 19:53
quelle
3

Zahlen, die mit 0 beginnen, werden im oktalen Format angenommen, genauso wie Zahlen, die mit 0x beginnen, als hexadezimal angenommen werden. Oktalziffern gehen nur von 0 nach 7 , also ist 9 in einer Oktalzahl einfach nicht legal.

Am einfachsten wäre es, die Zahlen einfach im Dezimalformat zu schreiben: 07001 in oktal ist gleich wie 3585 in dezimal (glaube ich). Oder wollten Sie die Zahlen dezimal schreiben? Die einfachste Lösung besteht dann darin, die führenden Nullen wegzulassen: 07001 ist gleich wie 7001 auf jeden Fall.

Sie erwähnen jedoch, dass Sie eine Reihe von Postleitzahlen wünschen. In diesem Fall wäre die richtige Lösung, ein Array von Postleitzahlen anstelle eines Arrays von Ganzzahlen zu verwenden, da Postleitzahlen keine Ganzzahlen sind, sondern Postleitzahlen.

    
Jörg W Mittag 05.03.2011 19:57
quelle

Tags und Links