处理带有前导零的红宝石八进制

时间:2013-07-16 15:35:48

标签: ruby numbers integer zero

输出结果

puts (030).to_i

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

2 个答案:

答案 0 :(得分:6)

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

030 == 3 * 8 ** 1 + 0 * 8 ** 0

答案 1 :(得分:0)

您可能应该看看如何在必须将030转换为30的情况下结束。

如果您接受任何类型的用户输入,您可能在收到用户输入时,以字符串"030"开头,然后调用"030".to_i将为您提供所需的{{1}结果1}}。

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