ユーザーの選択に応じて(IEでのみ)Infinityを表示する一連のJavascript計算があります。
Infinityたとえば、単語の表示を停止して、0.0代わりに表示するにはどうすればよいですか?
ユーザーの選択に応じて(IEでのみ)Infinityを表示する一連のJavascript計算があります。
Infinityたとえば、単語の表示を停止して、0.0代わりに表示するにはどうすればよいですか?
if (result == Number.POSITIVE_INFINITY || result == Number.NEGATIVE_INFINITY)
{
// ...
}
isFinite処理方法によっては、代わりに関数を使用することもできますNaN。番号が、、またはの場合に戻りisFiniteます。falsePOSITIVE_INFINITYNEGATIVE_INFINITYNaN
if (isFinite(result))
{
// ...
}
で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またはn === n/0動作:
function isInfinite(n) {
return n === n/0;
}
ネイティブisFinite()は数値への入力を強制することに注意してください。isFinite([])とisFinite(null)は両方ともtrue例えばです。
実際には、n === n + 1は、51ビットより大きい数値に対して機能します。
1e16 + 1 === 1e16; // true
1e16 === Infinity; // false
(number === Infinity || number === -Infinity)
または複数の文字を保存するには:
Math.abs(number) === Infinity
私は、読みやすさだけでなく、さまざまな防御的なコーディングの理由から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タイプであるかどうかを確認する必要があるシナリオに遭遇しましたが、有効な結果として文字列を渡します。多くのテキスト文字列は誤検知を生成するため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);
}