javascript NaNとInfinityとは
- 作成日 2020.09.01
- 更新日 2022.06.14
- javascript
- javascript
javascriptで定義されている値である「NaN」と「Infinity」について、簡単なコードを使って記述してます。
環境
- OS windows10 pro 64bit
- Apache 2.4.43
- ブラウザ chrome 102.0.5005.63
NaNとInfinityの違い
「NaN」は、数字で表現できない「非数」と呼ばれるものを計算した際に発生します。
// 0 ÷ 0
console.log( 0/0 ); // NaN
// abcを数値に変換
console.log( Number('abc') ); // NaN
// -1の平方根
console.log( Math.sqrt(-1) ); // NaN
// ちなみにInfinity/Infinityも
console.log( Infinity/Infinity ) // NaN
また、NaNの型は「number」となってます。
console.log( typeof NaN ) // number
NaNとNaN比較した場合は、falseになります
console.log( NaN === NaN ) // false
Infinityは、無限という意味で計算結果がとてつもなく大きくなると発生します。
// 100 の 100乗
console.log( Math.pow(100, 1000) ); // Infinity
// 1 ÷ 0 → 限りなく無限に近くなる
console.log( 1/0 ); // Infinity
また、Infinityの型も「number」となってます。
console.log( typeof Infinity ) // number
InfinityとInfinityを比較した場合は、trueになりますが、符号を逆にして比較するとfalseになります。
console.log( Infinity === Infinity ) // true
console.log( -Infinity === -Infinity ) // true
console.log( Infinity === -Infinity ) // false
また、Infinityに数値で四則演算した場合は、以下の結果となります。
console.log(Infinity + 1) // Infinity
console.log(Infinity - 1) // Infinity
console.log(Infinity + Infinity) // Infinity
console.log(Infinity - Infinity) // NaN
console.log(Infinity * 10) // Infinity
console.log(Infinity * Infinity) // Infinity
console.log(-Infinity * Infinity) // -Infinity
console.log(-Infinity / Infinity) // NaN
console.log(Infinity**0) // 0乗は1
NaNとInfinity判定
NaNは、isNaN関数を使用することで判定することができます。
console.log(isNaN(NaN)); // true
console.log(isNaN(Math.sqrt(-1))); // true
console.log(isNaN(Number('abc'))); // true
console.log(isNaN(Infinity - Infinity)); // true
Infinityは、有理数であるかを判定するisFinite関数を使用することで判定することができます。
console.log(isFinite(Infinity)); // false
console.log(isFinite(Math.pow(100, 1000))); // false
console.log(isFinite(1/0)); // false
-
前の記事
javascript nullとundefinedの比較 2020.09.01
-
次の記事
git pull時にエラー「fatal: refusing to merge unrelated histories」が発生した場合の対処法 2020.09.01
コメントを書く