parseInt (1/0, 19)가 18을 반환하는 이유는 무엇입니까?
JavaScript에 성가신 문제가 있습니다.
> parseInt(1 / 0, 19)
> 18
parseInt
함수가 반환 되는 이유는 무엇 18
입니까?
의 결과는 1/0
입니다 Infinity
.
parseInt
첫 번째 인수를 문자열로 처리합니다. 즉, 먼저 호출되어 문자열을 Infinity.toString()
생성합니다 "Infinity"
. 따라서 "Infinity"
19 진수를 십진수 로 변환하도록 요청한 것과 동일하게 작동합니다 .
다음은 십진수 값과 함께 19 진법의 숫자입니다.
Base 19 Base 10 (decimal)
---------------------------
0 0
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
a 10
b 11
c 12
d 13
e 14
f 15
g 16
h 17
i 18
다음에 일어나는 일은 parseInt
입력 "Infinity"
을 스캔하여 파싱 할 수있는 부분을 찾고 첫 번째를 수락 한 후 중지합니다 I
( n
베이스 19에서 유효한 숫자가 아니기 때문에 ).
따라서 parseInt("I", 19)
위의 표에 따라 십진수 18로 변환되는를 호출 한 것처럼 작동 합니다.
이벤트 순서는 다음과 같습니다.
1/0
평가하다Infinity
parseInt
19 진법에서 18 인Infinity
것을 읽고 즐겁게 메모합니다.I
parseInt
변환 할 수 없기 때문에 나머지 문자열을 무시합니다.
모든 염기에 대한 결과를 얻지 >= 19
만 그 이하의 염기에 대해서는 결과를 얻지 못합니다. bases의 >= 24
경우 n
해당 지점에서 유효한 숫자가되므로 더 큰 결과를 얻을 수 있습니다 .
위의 답변에 추가하려면 :
parseInt는 문자열을 숫자로 구문 분석하기위한 것입니다 (단서는 이름에 있습니다). 귀하의 상황에서는 1/0이 이미 숫자이므로 구문 분석을 전혀 수행하고 싶지 않으므로 이상한 기능 선택입니다. (당신이하는) 숫자가 있고 그것을 특정 기수로 변환하고 싶다면, 대신 에 기수와 함께 toString을 사용해야 합니다.
var num = 1 / 0;
var numInBase19 = num.toString(19); // returns the string "Infinity"
위의 답변에 추가하려면
parseInt(1/0,19)
다음과 같다 parseInt("Infinity",19)
19 진수 이내 0-9
이며 A-I
(or a-i)
유효한 숫자입니다. 따라서 "Infinity"에서 I
19 진법을 취하고 18 진법이되는 10 진법으로 변환합니다. 그런 다음 n
19 진법에없는 다음 문자를 취하려고합니다. 따라서 다음 문자를 버립니다 (자바 스크립트의 문자열을 숫자로 변환하는 동작에 따라 )
따라서 parseInt("Infinity",19)
OR parseInt("I",19)
OR 을 쓰면 parseInt("i",19)
결과는 동일 18
합니다.
당신이 쓰는 지금, 만약 parseInt("I0",19)
결과가 될 것 342
으로 I X 19 (the base)^1 + 0 X 19^0
= 18 X 19^1 + 0 X 19^0
= 18 X 19 + 0 X 1
=342
마찬가지로 parseInt("I11",19)
결과는6518
즉
18 X 19^2 + 1 X 19^1 + 1 X 19^0
= 18 X 19^2 + 1 X 19^1 + 1 X 19^0
= 18 X 361 + 1 X 19 + 1 X 1
= 6498 + 19 + 1
= 6518
참고 URL : https://stackoverflow.com/questions/11340673/why-does-parseint1-0-19-return-18
'your programing' 카테고리의 다른 글
SSH를 사용하여 서버에서 파일을 다운로드하는 방법은 무엇입니까? (0) | 2020.09.29 |
---|---|
분리 된 화면 세션 종료 (0) | 2020.09.28 |
Node.js의 디렉토리에있는 모든 파일의 이름 목록을 어떻게 얻습니까? (0) | 2020.09.28 |
스트림에서 바이트 배열 만들기 (0) | 2020.09.28 |
.md 확장자를 사용하는 파일은 무엇이며 어떻게 편집해야합니까? (0) | 2020.09.28 |