9

我正在尝试制作一系列邮政编码。

array = [07001, 07920]

这返回:

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

以前从未见过。任何解决方法?

4

3 回答 3

18

Ruby 将具有前导 0 的数字解释为八进制(以 8 为底)。因此数字 8 和 9 无效。

将邮政编码存储为字符串而不是数字可能更有意义(以避免在显示时用零填充),如下所示:array = ["07001", "07920"]

于 2011-03-05T19:52:46.330 回答
4

以 开头的数字0被假定为八进制格式,就像以 开头的数字0x被假定为十六进制格式一样。八进制数字只能从0to 7,因此9在八进制数字中根本不合法。

最简单的解决方法是简单地以十进制格式编写数字:07001八进制与3585十进制相同(我认为)。或者你的意思是用十进制写数字?然后,最简单的解决方法是去掉前导零:无论如何07001都是一样的。7001

但是,您提到您需要一个邮政编码数组。在这种情况下,正确的解决方案是使用邮政编码数组而不是整数数组,因为邮政编码不是整数,它们是邮政编码。

于 2011-03-05T19:57:43.880 回答
3

您的数组是数字,因此前导零会导致它被解释为八进制(有效数字 0-7)。如果这些是邮政编码,并且前导零很重要,那么它们可能应该是字符串。

于 2011-03-05T19:53:05.743 回答