[javascript] parseInt를 호출 할 때 왜 radix 매개 변수를 사용해야합니까?

기수는 실제로 무엇을 의미합니까? 왜 필요합니까?

parseInt(10, radixValue);



답변

정수를 항상 밑이 10 인 숫자로 구문 분석하지 않을 수도 있으므로 기수를 제공하면 다른 숫자 체계를 지정할 수 있습니다.

기수는 단일 숫자 값의 수입니다. 16 진수는 16입니다. 8 진수는 8, 2 진수는 2, 등등 …

에서 parseInt()기능을 제공하지 않고 당신이 기수 암시 할 수있는 몇 가지가있다. 사용자가 규칙 중 하나와 일치하지만 명시 적으로 의미하지는 않는 문자열을 입력하는 경우에도 이러한 문제가 발생할 수 있습니다. 예를 들면 :

// Numbers with a leading 0 used a radix of 8 (octal) before ECMAScript 5.
// These days, browsers will treat '0101' as decimal.
var result = parseInt('0101');

// Numbers that start with 0x use a radix of 16 (hexidecimal)
var result = parseInt('0x0101');

// Numbers starting with anything else assumes a radix of 10
var result = parseInt('101');

// Or you can specify the radix, in this case 2 (binary)
var result = parseInt('0101', 2);


답변

같은 문자열 숫자 0700가 있고 출력이 정수가되기를 원한다면 8 진수가 아닌 10 진수임을 700알려야 parseInt()합니다.

console.log(parseInt("0700"));
// 448

// I really wanted decimal (base 10)
console.log(parseInt("0700", 10));
// 700

// What is this? Binary, Decimal, Octal?
console.log(parseInt("0110"));
// 72

// as binary
console.log(parseInt("0110", 2));
// 6

참고 내가 절반 밖에 귀하의 질문에 대답했다. 기수가 실제로 무엇인지에 대한 좋은 정의는 다른 사람들을 참조하십시오.


답변

기수는 계산 시스템의 기본입니다. 무한한 수의 숫자 체계가 있지만 대부분의 사람들에게 익숙한 것은 10 진법 (10 진수)과 2 진법 (이진법)입니다.

숫자 값은 기준에 따라 다르게 해석 될 수 있습니다. 예를 들어 2 진수 10은 10 진수 2로 표현할 수 있습니다.

의 경우 parseInt()기수를 사용하면 사용할 기준을 지정할 수 있습니다. 기본적으로 기수 10이 사용됩니다.

그러나 밑수 10을 사용하는 경우에도 기수는 항상 지정해야합니다.

parseInt("010") // 8을 반환합니다.

언뜻보기에 명령문이 10을 반환 할 것으로 예상 할 수 있습니다. 기수를 명시 적으로 사용하면 혼동을 피하는 데 도움이됩니다.

parseInt("010", 10) // 반환 : 10


답변

기수는 숫자 체계의 기본 번호입니다. http://en.wikipedia.org/wiki/Radix

일반적으로 10과 다르기를 원하는 경우에만 기수를 지정하면됩니다.보다 구체적으로 ( http://www.w3schools.com/jsref/jsref_parseInt.asp에서 ) :

radix 매개 변수가 생략되면 JavaScript는 다음을 가정합니다.

문자열이 “0x”로 시작하면 기수는 16 (16 진수)입니다. 문자열이 “0”으로 시작하면 기수는 8 (8 진수)입니다. 이 기능은 더 이상 사용되지 않습니다. 문자열이 다른 값으로 시작하는 경우 기수는 10 (10 진수)입니다.


답변

질문에 명확하게 답할 수있는 추가 정보를 추가하면됩니다.

radix가 정의되지 않았거나 0 (또는 부재)이면 JavaScript는 다음을 가정합니다.

  • […]
  • 입력 문자열이 “0”으로 시작하는 경우 기수는 8 (8 진수) 또는 10 (10 진수)입니다. 정확히 어떤 기수가 선택되는지는 구현에 따라 다릅니다. ECMAScript 5는 10 (십진수)을 사용하도록 지정하지만 모든 브라우저가 아직이를 지원하지는 않습니다. 이러한 이유로 parseInt를 사용할 때 항상 기수를 지정하십시오.
  • […]

출처 : MDN parseInt ()


답변

내 의견 일 뿐이지 만 “기수를 사용해야한다”는 생각은 금방 구식이된다. 문제는 IT 세계 외부의 사람들이 일반적으로 십진수 이외의 숫자 표기법을 사용하지 않고 “010”과 같이 0으로 채워진 십진수를 제공하기 때문에 실제로 얼마 전에 실제로 발생했습니다. 그러나 JS의 ECMAScript 6 8 진수는 ECMAScript 5 및 3에서와 같이 “0”이 아니라 “0o”로 시작되므로 IE 제품군을 대상으로하지 않는 경우 (지금은 드문 상황이 아닙니다) radix를 건너 뛸 수 있습니다. 안전하게.


답변

기수 매개 변수는 사용할 숫자 체계를 지정하는 데 사용됩니다. 예를 들어 기수 16 (16 진)은 문자열의 숫자가 16 진 숫자에서 10 진수로 구문 분석되어야 함을 나타냅니다.

radix 매개 변수가 생략되면 JavaScript는 다음을 가정합니다.

문자열이 “0x”로 시작하면 기수는 16 (16 진수)입니다.

문자열이 “0”으로 시작하는 경우 기수는 8 (8 진수)입니다. 이 기능은 더 이상 사용되지 않습니다.

문자열이 다른 값으로 시작하는 경우 기수는 10 (10 진수)입니다.

소스 W3Schools