[javascript] 숫자가 소수점 이하 자릿수인지 정수인지 확인하십시오

JavaScript에서 숫자가 소수인지 확인하는 쉬운 방법을 찾고 있습니다 (정수인지 확인하기 위해). 예를 들어

23 -> OK
5 -> OK
3.5 -> not OK
34.345 -> not OK
if(number is integer) {...}



답변

모듈러스 를 사용 하면 효과가 있습니다.

num % 1 != 0
// 23 % 1 = 0
// 23.5 % 1 = 0.5

이는 형식에 관계없이 숫자의 숫자 을 기반으로 합니다. 고정 소수점이있는 정수를 포함하는 숫자 문자열을 정수와 동일하게 처리합니다.

'10.0' % 1; // returns 0
10 % 1; // returns 0
'10.5' % 1; // returns 0.5
10.5 % 1; // returns 0.5


답변

Number.isInteger(23);  // true
Number.isInteger(1.5); // false
Number.isInteger("x"); // false: 

Number.isInteger () 는 ES6 표준의 일부이며 IE11에서는 지원되지 않습니다.

그것은에 대해 false를 반환 NaN, Infinity및 숫자가 아닌 인수하면서 x % 1 != 0true를 반환합니다.


답변

또는 이것을 사용하여 소수점이 아닌지 알아낼 수 있습니다.

string.indexOf(".") == -1;


답변

가장 일반적인 해결책은 숫자의 정수 부분을 제거하고 다음과 같이 0과 비교하는 것입니다.

function Test()
{
     var startVal = 123.456
     alert( (startVal - Math.floor(startVal)) != 0 )
}


답변

간단하지만 효과적인!

Math.floor(number) === number;


답변

// 바이트 화는 어떻습니까?

Number.prototype.isInt= function(){
 return this== this>> 0;
}

나는 항상 자바 스크립트에서 비트 연산자에 대해 기분이 좋지 않습니다.

그들은 운동을 거의하지 않습니다.


답변

number = 20.5

if (number == Math.floor(number)) {

alert("Integer")

} else {

alert("Decimal")

}

꽤 시원하고 XX.0과 같은 것들에도 작동합니다! Math.floor ()는 소수가 있으면 소수점을 자르기 때문에 바닥이 원래 숫자와 다르면 소수임을 알 수 있습니다! 그리고 문자열 변환은 없습니다 🙂