【发布时间】:2011-07-09 13:05:52
【问题描述】:
我正在尝试制作一个邮政编码数组。
array = [07001, 07920]
这会返回:
array = [07001, 07920]
^
from (irb):12
from :0
以前从未见过。有什么解决方法吗?
【问题讨论】:
标签: ruby-on-rails ruby octal
我正在尝试制作一个邮政编码数组。
array = [07001, 07920]
这会返回:
array = [07001, 07920]
^
from (irb):12
from :0
以前从未见过。有什么解决方法吗?
【问题讨论】:
标签: ruby-on-rails ruby octal
Ruby 将具有前导 0 的数字解释为八进制(以 8 为底)。因此数字 8 和 9 无效。
将邮政编码存储为字符串而不是数字可能更有意义(以避免在显示时用零填充),例如:array = ["07001", "07920"]
【讨论】:
以0 开头的数字被假定为八进制格式,就像以0x 开头的数字被假定为十六进制格式一样。八进制数字只能从0 到7,所以9 在八进制数字中根本不合法。
最简单的解决方法是简单地以十进制格式编写数字:八进制的07001 与十进制的3585 相同(我认为)。或者你的意思是用十进制写数字?然后,最简单的解决方法是去掉前导零:无论如何,07001 与 7001 相同。
但是,您提到您需要一个邮政编码数组。在这种情况下,正确的解决方案是使用邮政编码数组而不是整数数组,因为邮政编码不是整数,而是邮政编码。
【讨论】:
您的数组是数字,因此前导零会导致它被解释为八进制(有效数字 0-7)。如果这些是邮政编码,并且前导零很重要,则它们可能应该是字符串。
【讨论】: