9
votes

Qu'est-ce qu'un chiffre octal illégal?

J'essaie de créer un tableau de codes postaux.

array = [07001, 07920]
                  ^
    from (irb):12
    from :0


0 commentaires

3 Réponses :


18
votes

Ruby est d'interpréter des nombres qui ont un 0 de premier ordre comme étant en octal (base 8). Ainsi, les chiffres 8 et 9 ne sont pas valides.

Il a probablement plus de sens de stocker des codes postaux comme des chaînes, au lieu de comme des chiffres (pour éviter de devoir se couvrir de zéros chaque fois que vous l'affichez), comme tel: array = ["07001", "07920"]


1 commentaires

Vous apprécierez également ces chaînes la première fois que vous essayez de créer un code postal canadien dans le domaine.



3
votes

Votre tableau est de chiffres, le principal zéro provoque l'interprétation d'une octale (chiffres valides de 0 à 7). Si ce sont des codes postaux et que le seuil de zéro est important, ils devraient probablement être des chaînes.


0 commentaires

4
votes

numéros commençant par 0 sont supposés être au format octal, comme des chiffres qui commencent par 0x sont supposés être au format hexadécimal. Les chiffres octals ne vont que de 0 à 7 , donc 9 n'est tout simplement pas légal dans un nombre octal.

La solution de contournement la plus facile serait de simplement écrire les chiffres en format décimal: 07001 en octal est identiel que 3585 en décimal (je pense). Ou voulez-vous dire les chiffres en décimal? Ensuite, la solution de contournement la plus facile est de laisser tomber les principaux zéros: 07001 est identique que 7001 de toute façon.

Cependant, vous mentionnez que vous souhaitez un tableau de codes postaux. Dans ce cas, la solution correcte serait d'utiliser, de puits, d'une matrice de code postal au lieu d'un tableau d'entiers, car les codes postaux ne sont pas des entiers, ce sont des codes postaux.


0 commentaires