Je résous ce kata rubis. Essentiellement ce que le code fait est de produire un nombre entier avec cinq chiffres. Exemple:Ruby Kata Entier Conversion dépannage
5 = 00005
12 = 00012
12345 = 12345
000=
Voici mon code:
def solution(value) #00001204
string_value = value.to_s
if string_value.length <= 5
amount_of_zeros = "0" * (string_value.length - 5).abs
puts "Value is #{amount_of_zeros}" + "#{string_value}"
else
start_of_characters = 5 - string_value.length #-3
puts "Value is " + string_value[-1..start_of_characters]
end
end
Tout fonctionne bien jusqu'à ce que je place 00001204
. Pour une raison quelconque, je reçois la sortie 00644
. J'ai essayé d'utiliser binding.pry
pour voir ce qui se passait et mon numéro est converti en 644
depuis le début. Pourquoi fait-il ça? Les docs ne mentionnent rien à ce sujet. Je ne sais pas comment résoudre ce problème car sur la première ligne de ma méthode, il est déjà 644
. Des pensées?
Merci @Zajn. Ruby n'aurait pas une méthode qui change l'octal en décimal, n'est-ce pas? –
Vous pouvez utiliser 'to_s (base)', où base est la base de nombres que vous voulez convertir. Donc '01204.to_s (10)' donnerait '' 644 "'. – Zajn
Dans * plusieurs * langues, les nombres 0-préfixés sont considérés comme octaux. Ce n'est pas limité à Ruby. '0x08 # => 8',' 010 # => 8', '8 # => 8',' 0b00001000 # => 8', qui sont des représentations hexadécimales, octales, décimales et binaires du même nombre '8'. –