我在ruby中转换数据类型时遇到了一些问题。
以下是我在控制台中获得的一些输出
0123 and enter gave me output 83
12345600.to_s #=> "12345600"
但
012345600.to_s gave me #=> "2739072" but i expect "012345600"
似乎在数字开头有0时输出不符合预期。
任何人都可以解释为什么会这样吗?或者为我提供一个解决方案,以便我可以获得预期的输出。
由于
答案 0 :(得分:5)
在数字的开头加0会使解释器/编译器将以下数字解释为八进制数字序列(基数8)而不是十进制数字序列(基数10)。因此,您输入的数字是八进制数而不是十进制数。
您可以通过将其置于八进制模式然后切换到十进制来在科学计算器上进行测试。
答案 1 :(得分:2)
在Ruby中启动一个零为零的数字告诉解析器您将以八进制表示法编写数字。继承了另一个SO的信息:
答案 2 :(得分:0)
你不能返回零,但你可以这样做。
0123.to_s(8)
#=> "123"
其实我感兴趣的是你是怎么得到像0123这样的数字的?
答案 3 :(得分:0)
电话号码02555555555
之类的“数字”根本不是数字。它们只是仅包含数字的字符串。