-1

输出结果

puts (030).to_i

24- 由于 Ruby 的八进制表示。如果030是一个fixnum(而不是一个字符串),有没有办法将它转换为30?
(表演(030).to_s也将回归'24'。)

4

2 回答 2

6

前导零的数字是八进制数。

030 == 3 * 8 ** 1 + 0 * 8 ** 0
于 2013-07-16T15:36:42.517 回答
0

您可能应该看看您最终是如何进入必须转换03030.

如果您接受任何类型的用户输入,您可能在收到用户输入的那一刻,以字符串开头,"030"然后调用"030".to_i将为您提供所需的30.

修复您的代码以使用字符串到 int 的转换,而不是以八进制结尾,然后通过去除前导 0 返回整数,这可能是“更干净”的。

于 2013-07-17T18:12:00.057 回答