사용자 선택에 따라 무한대를 표시하는 일련의 Javascript 계산이 있습니다 (IE에서만).
Infinity
예를 들어, 단어 표시를 중지하고 0.0
대신 표시 하는 방법은 무엇입니까?
답변
if (result == Number.POSITIVE_INFINITY || result == Number.NEGATIVE_INFINITY)
{
// ...
}
. isFinite
을 처리하려는 방법에 따라 대신 함수를 사용할 수 있습니다 NaN
. 번호가 , 또는 인 경우를 isFinite
반환 false
합니다 .POSITIVE_INFINITY
NEGATIVE_INFINITY
NaN
if (isFinite(result))
{
// ...
}
답변
단순 n === n+1
또는 n === n/0
작동 :
function isInfinite(n) {
return n === n/0;
}
네이티브 isFinite()
는 숫자에 대한 입력을 강제합니다. isFinite([])
그리고 isFinite(null)
모두 true
예를 들면.
답변
에서는 ES6
상기 Number.isFinite()
방법은 전달 된 값이 유한 수 있는지 여부를 판정한다.
Number.isFinite(Infinity); // false
Number.isFinite(NaN); // false
Number.isFinite(-Infinity); // false
Number.isFinite(0); // true
Number.isFinite(2e64); // true
답변
실제로 n === n + 1은 51 비트보다 큰 숫자에 대해 작동합니다.
1e16 + 1 === 1e16; // true
1e16 === Infinity; // false
답변
나는 가독성뿐만 아니라 다양한 방어 적 코딩 이유로 Lodash 를 사용하는 것을 좋아합니다 . ES6 은 훌륭하고 숫자가 아닌 값에 문제가 없지만 ES6이 가능하지 않다면 이미 lodash가 있거나 간단한 코드를 원합니다 : _.isFiniteNumber.isFinite
_.isFinite(Infinity); // false
_.isFinite(NaN); // false
_.isFinite(-Infinity); // false
_.isFinite(null); // false
_.isFinite(3); // true
_.isFinite('3'); // true
답변
값이 NaN
또는 Infinity
형식 인지 확인해야 하지만 유효한 결과로 문자열을 전달 해야하는 시나리오에 직면했습니다. 많은 텍스트 문자열이 false-positive를 생성 NaN
하므로이를 우회하는 간단한 솔루션을 만들었습니다.
const testInput = input => input + "" === "NaN" || input + "" === "Infinity";
위의 코드는 값을 문자열로 변환하고 값이 NaN 또는 Infinity와 정확히 같은지 확인합니다 (음의 무한대에 대해 다른 대소 문자를 추가해야 함).
그래서:
testInput(1/0); // true
testInput(parseInt("String")); // true
testInput("String"); // false
답변
isFinite 를 창에서 사용할 수 있습니다 isFinite(123)
.
다음과 같은 함수를 작성할 수 있습니다.
function isInfinite(num) {
return !isFinite(num);
}
그리고 다음과 같이 사용하십시오.
isInfinite(null); //false
isInfinite(1); //false
isInfinite(0); //false
isInfinite(0.00); //false
isInfinite(NaN); //true
isInfinite(-1.797693134862316E+308); //true
isInfinite(Infinity); //true
isInfinite(-Infinity); //true
isInfinite(+Infinity); //true
isInfinite(undefined); //true
또한 Number.isFinit
값이 숫자인지 확인 undefined
하고 확인하는 데 더 정확한 null
등 을 확인할 수도 있습니다 .
또는 다음 과 같이 폴리 필 할 수 있습니다 .
Number.isFinite = Number.isFinite || function(value) {
return typeof value === 'number' && isFinite(value);
}
