9

郵便番号の配列を作成しようとしています。

array = [07001, 07920]

これは以下を返します:

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

これは前に見たことがない。回避策はありますか?

4

3 に答える 3

18

Rubyは、先頭に0が付いている数値を8進数(基数8)であると解釈しています。したがって、数字の8と9は無効です。

郵便番号を数値ではなく文字列として保存する方がおそらく理にかなっています(表示するたびにゼロを埋める必要がないようにするため)。array = ["07001", "07920"]

于 2011-03-05T19:52:46.330 に答える
4

で始まる0数値は、16進数形式であると想定されるのと同様に、8進数形式であると0x想定されます。08進数はからまでしか移動しない7ため9、8進数では正しくありません。

最も簡単な回避策は、数値を10進数形式で記述することです07001。8進数は10進数と同じです3585(私は思います)。それとも、数字を10進数で書くつもりでしたか?次に、最も簡単な回避策は、先行ゼロを省略することです。とにかく07001同じ7001です。

ただし、郵便番号の配列が必要であるとのことです。その場合、正しい解決策は、整数の配列ではなく、郵便番号の配列を使用することです。郵便番号は整数ではなく、郵便番号です。

于 2011-03-05T19:57:43.880 に答える
3

配列は数値であるため、先行ゼロにより、8進数(有効な数字0〜7)として解釈されます。これらが郵便番号であり、先行ゼロが重要である場合は、おそらく文字列である必要があります。

于 2011-03-05T19:53:05.743 に答える