다른 기준에서 숫자를 문자열로 변환하는 메서드를 실행하려고합니다.
아래 힌트를 사용하여 다른 기반으로 변환하는 방법을 알아 냈습니다.
#You will want to use the %, or modulus function; this finds the remainder when you divide by a number:
(123 / 10**0) % 10 == 3 # ones place
(123 / 10**1) % 10 == 2 # tens place
(123 / 10**2) % 10 == 1 # hundreds place
그러나 스크립트를 실행하면 오류가 발생합니다.
/Users/stepan/Desktop/ruby_tester.rb:33:in `block in num_to_s': undefined local variable or method `digit' for main:Object
하지만 digit라는 지역 변수가 있다고 생각합니다. 내가 무엇을 잘못하고 있지?
Digits = {
1 => "1",
2 => "2",
3 => "3",
4 => "4",
5 => "5",
6 => "6",
7 => "7",
8 => "8",
9 => "9",
10 => "10",
11 => "a",
12 => "b",
13 => "c",
14 => "d",
15 => "e",
16 => "f",
}
def num_to_s(num,base)
highest_power = 0
answer = " "
while base**highest_power < num
highest_power += 1
end
puts highest_power
for power in 0..highest_power do
digit = Digits[ ((num / base**power) % base) ]
answer.prepend(digit)
end
puts answer
end
num_to_s(10,2)
Digits 해시에 0을 추가합니다.
0 => "0",
(10 / 2**0) % 2
0
에서 찾을 수없는 것으로 평가 Digits
되므로 digit
nil 로 설정 됩니다.
코드에 다른 문제 (10 => '10'및 11 => 'a'?)가 있고 작업을 수행하는 더 좋은 방법이 있지만이 문제를 극복해야합니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다