🦎
[JS]Infinityの使い方
Infinityとは
Infinity
は、通常の数値の範囲を超えた「無限大」を表す数値で、特に大きな値や割り算でのエラー結果としてよく現れます。例えば、1 / 0
のような演算は Infinity
を返します。同様に-Infinity
は負の無限大を示します。
console.log(1 / 0); // 出力: Infinity
console.log(-1 / 0); // 出力: -Infinity
console.log(10e1000); // 出力: Infinity (10の1000乗は非常に大きな数)
反対に最小値を扱う場合は以下の通りです。
let minPrice = Infinity;
let prices = [300, 250, 400, 200];
for (let price of prices) {
if (price < minPrice) {
minPrice = price;
}
}
console.log(minPrice); // 出力: 200
正常な計算結果と異常な計算結果の区別
Infinity
は、計算が異常な結果を返したことを示すためにも使用されます。特に、ゼロでの除算やオーバーフローが発生した場合、Infinity
が返されます。この特徴を利用して、エラー処理や異常値検出を行うことができます。
let result = 1 / 0;
if (result === Infinity) {
console.log("異常な計算結果: Infinityが返されました。");
} else {
console.log("正常な計算結果: " + result);
}
この例では、result
が Infinity
であるかをチェックし、異常な計算結果であることをユーザーに知らせる処理を行っています。
InfinityとNaNの違い
Infinity
は「無限大」を表しますが、JavaScriptにはもう一つの特殊な数値である NaN
(Not a Number)があります。これらはしばしば混同されますが、全く異なる意味を持ちます。
-
Infinity
: 数値が非常に大きいか、ゼロで割るなどの計算結果が無限大になったことを示します。 -
NaN
: 数値として解釈できない計算結果、例えば数値と文字列の足し算などで返されるものです。
console.log(1 / 0); // 出力: Infinity
console.log("abc" / 2); // 出力: NaN (文字列を数値に割り算しようとした)
Infinityを用いたエラーハンドリングの応用
エラーハンドリングの観点からも、Infinity
は役立つツールです。例えば、異常な計算結果を検出してエラーを報告する際に、Infinity
のチェックを組み込むことで、異常値を効率的に検出できます。データ分析や数値計算を行うツールで、予期しない無限大の値が計算結果に現れた場合、それを警告としてユーザーに通知することができます。
function analyze(data) {
let sum = 0;
for (let value of data) {
sum += value;
if (!isFinite(sum)) {
throw new Error("計算結果が無限大になりました。入力データを確認してください。");
}
}
return sum;
}
try {
console.log(analyze([10, 20, 30, 1/0])); // 無限大の値を含む配列
} catch (error) {
console.error(error.message);
}
Discussion