2017-10-17 128 views
-3

時,如果我通過1遞增整數003保留0的,我得到4遞增的數字

num = 003 
num += 1 
# => 4 

我希望它是004。我怎樣才能保留此0的?

+0

不清楚你的意思。 – sawa

+0

嗯。有趣。也許這是因爲我認爲這是超級簡單的,所以在這裏遲到了? @sawa感謝 – Bitwise

+0

@Bitwise目前還不清楚,因爲整數沒有前導零,即不存在整數'003'並沒有整數'004'。字面'003'相當於'03'這意味着_octal_數'3'。這可能不是你想要的。 – Stefan

回答

2

您可以將整數轉換成字符串,並使用String#rjust,其中第一個參數是結果的總寬度給它填充固定量字符串,第二個參數是用於填充字符:

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

然後你就可以使用String#next增加該字符串:

>> str.next 
#=> "004" 
+0

這個答案是錯的。 「你不能有一個值爲003的整數」與'int = 003相矛盾; int#=> 3'。你**可以擁有這樣的整數。此外,只是聲明「[你]失去了這些前導零,而變量只保留了整數值」是錯誤的。它不是簡單地切斷前導零。這不是它的工作方式。 '009'並不意味着'9'。看到畝太短的答案。 – sawa

+0

@sawa已更新的答案。 – moveson

3

首先,在003前導零使得在Ruby中的八進制整數文字,而不是一個小數。當然,它不會與3重要,但它確實爲009事情(這是一個SyntaxError),030等想必你真正的意思是說:

num = 3 

爲主導的零都算不上部分的數字,他們只是格式化你想要的輸出。要格式化數字,你會使用String#%sprintf

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

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