정수 유형 (정수)은 종종 자바 스크립트에서 이상한 문제를 일으 킵니다. ECMAScript 사양에서는 개념에만 존재합니다.
모든 숫자는 부동 소수점 번호이며 정수에는 소수점이없는 숫자 세트가 없습니다.
이 블로그에서는 값이 정수인지 확인하는 방법을 설명하겠습니다.
ECMAScript 5
ES5에서 사용할 수있는 방법에는 여러 가지가 있습니다. 때때로, 당신은 자신의 방법을 사용하고 싶을 수도 있습니다 : Isinteger (x)의 함수는 정수 인 경우 true를 반환합니다. 그렇지 않으면 False를 반환합니다.
몇 가지 예를 살펴 보겠습니다.
나머지 점검을 통과하십시오
나머지 작업 (%)을 사용하고 나머지를 1 씩 계산하여 나머지가 0인지 확인할 수 있습니다.
함수 isinteger (x) {return x % 1 === 0;}이 방법은 매우 간단하고 효과적이기 때문에이 방법을 좋아합니다.
> ISINTEGER (17) TRUE> ISINTEGER (17.13) FALSE
결과는 첫 번째 숫자의 부호에 따라 다르기 때문에 나머지 작업을 작동 할 때주의해야합니다. 긍정적 인 경우 결과는 긍정적입니다. 그렇지 않으면 그것은 부정적입니다.
> 3.5 % 10.5> -3.5 % 1-0.5
그런 다음 실제로는 문제가되지 않는 0을 확인할 수 있습니다. 그러나 문제는 다음과 같습니다.이 방법은 비수분에 대해서도 true를 반환합니다. %는 숫자로 변환되기 때문입니다.
> isinteger ( '') true> isinteger ( '33') true> isinteger (false) true> isinteger (true) true
간단한 유형 확인으로 해결할 수 있습니다.
함수 isinteger (x) {return (typeof x === 'number') && (x % 1 === 0);}math.round ()에 의해 숫자가 반올림되어 이전 값과 동일한 값을 갖는 경우 정수입니다. JavaScript에서는 math.round ()를 통해 확인할 수 있습니다.
함수 isinteger (x) {return math.round (x) === x;}이 방법도 좋습니다
> ISINTEGER (17) TRUE> ISINTEGER (17.13) FALSE
math.round ()는 항상 숫자를 반환하고 === 유형이 동일 한 경우에만 true를 반환하기 때문에 숫자가 아닌 것을 판단 할 수도 있습니다.
> isinteger ( '') false
코드를 더 명확하게하려면 유형 확인을 추가 할 수 있습니다 (이전 버전에서 수행 한 작업). 또한 Math.floor () 및 Math.ceil ()은 Math.Round ()처럼 작동 할 수 있습니다. 비트 작업을 통해 비트 연산자를 확인하면 "반올림"의 또 다른 방법이 제공됩니다.
함수 isinteger (x) {return (x | 0) === x;}이 솔루션 (다른 비트 작업과 마찬가지로)에는 한 가지 단점이 있습니다. 32 비트를 초과하는 숫자를 처리 할 수 없습니다.
> isinteger (Math.pow (2, 32)) false
parseint ()를 통해 parseint ()를 확인하면 숫자를 정수로 변환하기 위해 math.round ()와 유사한 메소드를 제공합니다. 이 방법이 왜 좋은지 봅시다.
함수 isinteger (x) {return parseint (x, 10) === x;}Math.round () 솔루션과 마찬가지로 수치가 아닌 경우를 처리 할 수 있지만 모든 정수 번호를 올바르게 처리하지는 않습니다.
> ISINTEGER (1000000000000000000000000000) FALSE
왜? parseint ()는 정수를 구문 분석하기 전에 첫 번째 매개 변수를 문자열로 구문 분석하도록 강요합니다. 따라서이 방법을 사용하여 숫자를 정수로 변환하는 것은 좋은 선택이 아닙니다.
> Parseint (10000000000000000000000000, 10) 1> 문자열 (1000000000000000000000000000) '1E+21'
위와 마찬가지로 Parseint ()는 '1e+21'을 구문 분석 할 때 1에서 처리를 중지하므로 1. ecmascript 6 math.round () Throw 추가 용 ECMAScript 6을 반환합니다. ES6은 숫자를 정수로 변환하는 다른 메소드를 제공합니다. 이 함수는 숫자의 분수 부분을 제거합니다.
> Math.trunc (4.1) 4> Math.trunc (4.9) 4> Math.trunc (-4.1) -4> Math.trunc (-4.9) -4
또한 ECMAScript6은 내장 함수 번호가 포함되어 있기 때문에 정수를 확인하는 사소한 작업을 처리 할 필요가 없습니다.