요약
지금은 세 가지 방법을 생각했습니다. 독자가 다른 좋은 방법을 생각하면 의사 소통을 할 수도 있습니다.
parseint
비트 연산자
수학 수학 수학
설명
1. parseint
1. 예
parseint ( "13nash"); // 13parseint ( "") // nanparseint ( "0xa") // 10 (hexadecimal) parseint ( "13") // 13parseint ( "070") // es3는 56 (10 월) ES5는 70parseint (070) // 22입니다.
2. 전환 규칙 :
(1). 예 (1)에 따르면, Parseint는 비 Number가 멈출 때까지 구문 분석됩니다.
(2). 예 (2)에 따르면, 0이 아닌 빈 줄을 구문 분석 할 때는 NAN입니다.
(3). 예 (3)에 따르면, Parseint는 16 진수를 10 진수로 변환 할 수 있습니다.
(4). 예 (4)에 따르면, Parseint는 문자열의 공간을 무시합니다.
3. 단점 :
(1). 예 (5)에 따르면, 우리는 옥탈 어레이를 변환 할 때 parseint가 양립 할 수 없음을 알 수 있습니다. ES3은 070을 8 월 값으로 간주하지만 ES5는 070을 소수점으로 간주합니다.
(2). 예 (6) (7)에 따르면 ParseInt가 실행되면 먼저 매개 변수를 문자열로 변환 한 다음 정수로 실행한다는 것을 알 수 있습니다.
4. 설명 : 왜 (5) (6) 실행이 070을 정수로 변환하지만 결과는 다릅니 까? 이것은 또한 단점을 해결하는 방법의 두 번째 요점입니다.
공식 문서를 읽을 때 문자열이 문자열이 아닌지 보았으므로 하나로 변환됩니다. 이 구절. 즉, 매개 변수가 문자열이 아닌 경우 먼저 문자열로 변환 한 다음 정수로 변환됩니다. 예를 들어, 예 (6)의 parseint (070)는 실제로 070을 먼저 문자열로 변환합니다. 070+ "또는 String (070)을 시도 할 수 있으며 070은 8 월 시스템이기 때문에 070이"56 "으로 변환 될 것임을 알고 있습니다. 그런 다음 Parseint ( "56")가되고 최종 정수는 56입니다. ES3이든 ES5에 있든 56입니다.
2. 비트 연산자
1. 예
Console.log (0 | "123.45") // 123console.log (0 | 123.45) // 123console.log (0 ^ 123.45) // 123console.log (~~ 123.45) // 123
2. 원리 : JavaScript에는 정수 개념이 없으며 모든 숫자 유형은 이중 정제 플로팅 지점 숫자입니다. 비트 연산자를 사용할 때는 먼저 피연산자를 정수로 변환하여 작동에 편리합니다. 0 및 기타 값은 작동 값을 변경하지 않습니다.
3. 수학 및 수학
1. 예
Console.log (Math.floor (2.3) // 2console.log (Math.floor (-2.3) // -3console.log (Math.ceil (2.3) // 3console.log (-2.3) //- 2
2. 둘은 불충분합니다. Math.floor는 숫자의 최소 정수를 얻습니다. Math.ceil은 최대 정수를 얻습니다. 따라서 -2.3을 반올림하면 -2를 얻을 수 있지만 Math.floor를 사용하면 -3을 얻을 수 있습니다. 2.3은 Math.ceil을 사용하여 3을 얻지 만 2 만 있으면됩니다.
3. 해결 :
// 기능 함수를 직접 정의합니다 getInt (val) {return val> 0? Math.floor (Val) : Math.ceil (val);}