【问题标题】:What is an Illegal octal digit?什么是非法八进制数字?
【发布时间】:2011-07-09 13:05:52
【问题描述】:

我正在尝试制作一个邮政编码数组。

array = [07001, 07920]

这会返回:

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

以前从未见过。有什么解决方法吗?

【问题讨论】:

    标签: ruby-on-rails ruby octal


    【解决方案1】:

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

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

    【讨论】:

    • 当您第一次尝试将加拿大邮政编码填入该字段时,您也会喜欢这些字符串。
    【解决方案2】:

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

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

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-08-25
        • 2013-08-18
        • 2010-09-07
        • 2011-10-17
        • 2018-09-08
        • 2020-02-23
        • 2014-09-06
        • 2016-03-25
        相关资源
        最近更新 更多