我正在尝试制作一系列邮政编码。
array = [07001, 07920]
返回:
array = [07001, 07920]
^
from (irb):12
from :0
之前从未见过这个。任何解决方法?
答案 0 :(得分:18)
Ruby正在将具有前导0的数字解释为八进制(基数为8)。因此,数字8和9无效。
将邮政编码存储为字符串而不是数字可能更有意义(以避免在显示时使用零填充),如下所示:array = ["07001", "07920"]
答案 1 :(得分:4)
假设以0
开头的数字采用八进制格式,就像以0x
开头的数字一样,假设为十六进制格式。八进制数字仅从0
变为7
,因此9
在八进制数字中根本不合法。
最简单的解决方法是简单地以十进制格式编写数字:八进制中的07001
与十进制中的3585
相同(我认为)。或者你的意思是用十进制数字写?然后,最简单的解决方法是不使用前导零:07001
无论如何都与7001
相同。
但是,您提到需要一组邮政编码。在这种情况下,正确的解决方案是使用一个ZIP代码数组而不是整数数组,因为邮政编码不是整数,而是邮政编码。
答案 2 :(得分:3)
您的数组是数字,因此前导零使其被解释为八进制(有效数字0-7)。如果这些是邮政编码,并且前导零很重要,那么它们应该是字符串。