2014-12-03 3 views
0

누군가 JavaScript로 결과를 얻는 이유를 설명해 주실 수 있습니까?JavaScript 퍼즐 : JavaScript의 parseInt 결과를 이해할 수 없습니다.

parseInt ('a' , 24) === 24 ; 
>false 
parseInt ('a' , 34) === 24 ; 
>false 
parseInt ('o' , 34) === 24 ; 
>true 
+2

숫자가 10보다 큰 경우 (16 진수와 같음) 'a' =='10 진수', 'b' =='10 진수 11'... 등으로 표시되기 때문입니다. 당신은 마지막 줄에서 34 진수로 'o'를 얻습니다. 이것은 십진수로 24입니다. – blgt

+0

[ES5 15.1.2.2] (http://www.ecma-international.org/ecma-262/5.1/#sec-15.1 .2.2) : "* mathInt * [해석 된 값]은 * Z * [입력 문자열]이 기수 -R 표기법으로 표현 된 수학 정수 값이고, ** 문자는 'AZ'와 'az '10 ~ 35의 값을 갖는 숫자에 대해서 ** ** " – apsillers

답변

1

두 번째 인수 인 parseInt(string, radix);은 2와 36 사이의 정수입니다. 최초의 인수 캐릭터 라인의 기수.

parseInt(string, radix);의 반환 값은 지정된 기수에서 숫자로 취한 첫 번째 인수의 10 진수 표현입니다.

자, 마음에 유지하는 당신이 그들을 변환 할 경우 :이 나오는이 세 번째 경우에서 볼 수 있듯이

 Input   Output 

    a (base-24)  10 (base-10) 
    a (base-34)  10 (base-10) 
    o (base-34)  24 (base-10) 

그래서, 24 빙고로! 거기 당신은 조건이 사실로 간다. 나는이 일을 예전처럼

당신은 또 다른 하나 개의 수 체계로 변환 할 수있는 온라인 도구를 사용할 수 있습니다

http://extraconversion.com/base-number/base-34

희망이 도움이!

+0

그런 간단한 용어로 개념을 정리해 주셔서 감사합니다. 한 가지만 더 말해서 왜 초당 론자가 2에서 36 사이의 값을 가질 수 있는지 말해 주시겠습니까? –

+1

숫자 시스템은 숫자를 나타내는 여러 종류의 기호를 기반으로합니다. 예를 들어 바이너리를 사용하면 두 개의 지원되는 심볼 '0'과 '1'만 있습니다. 따라서 Indo-Arabic Numerals (0,1,2,3,4,5,6,7,8,9)와 Latin letters (az)의 모든 기호를 취하면 최대 36 개의 다른 기호를 가질 수 있습니다. 그러한 번호 시스템에서 번호를 나타냅니다. 그래서 Javascript 함수 parseInt가 기수를 36까지 지원합니다. –

+0

귀하의 질문에 대한 답변에 답을 표시하십시오. 원하는 경우 두 번째 질문을 별도의 질문으로 삼아 사람들이 검색 결과에서 찾을 수 있도록하십시오. –

2

parseInt의 두 번째 인수는 기수입니다.

밑수가 24 또는 34 인 경우 'a'는 알파벳의 첫 글자이기 때문에 10과 같으므로 '0'은 숫자 0-9 다음에 사용되는 첫 번째 숫자입니다. 'o'는 알파벳의 15 번째 글자이므로 마지막 숫자가 34 인 것과 같이 숫자가 많은 기지에서는 24와 같습니다.