输出结果
puts (030).to_i
是24
- 由于Ruby的八进制表示。如果030
是fixnum(而不是字符串),有没有办法将其转换为30?
(执行(030).to_s
也会返回'24'
。)
答案 0 :(得分:6)
前导零的数字是八进制数。
030 == 3 * 8 ** 1 + 0 * 8 ** 0
答案 1 :(得分:0)
您可能应该看看如何在必须将030
转换为30
的情况下结束。
如果您接受任何类型的用户输入,您可能在收到用户输入时,以字符串"030"
开头,然后调用"030".to_i
将为您提供所需的{{1}结果1}}。
修复你的代码使用字符串到int转换可能“更干净”,而不是以八进制结束,然后通过剥离前导0来返回整数。