递增数字时保留0

时间:2017-10-17 02:43:54

标签: ruby

如果我按003增加整数1,我会得到4

num = 003
num += 1
# => 4

我希望它是004。如何在此保留0

2 个答案:

答案 0 :(得分:3)

首先,003中的前导零使得Ruby中的八进制整数文字,而不是小数。当然,与3无关,但它对009SyntaxError),030等很重要。大概你真的想说:

num = 3

由于前导零不是数字的一部分,它们只是输出时想要的格式。要格式化数字,请使用String#%sprintf

> '%03d' % 3
=> "003" 

> sprintf('%03d', 3)
=> "003" 

答案 1 :(得分:3)

您可以将整数转换为String并使用String#rjust为其提供固定数量的填充,其中第一个参数是结果String的总宽度,第二个参数是用于填充的字符:

>> int = 3
>> str = int.to_s.rjust(3, '0')
#=> "003"

然后你可以使用String#next增加该字符串:

>> str.next
#=> "004"