文字列から数値への変換
JavaScriptでは、文字列を数値に変換するためのいくつかの方法があります。以下にその例を示します。
Number関数を使用する
let str = "123";
let num = Number(str);
console.log(num); // 123
この方法では、文字列が数値に変換できない場合、結果はNaN
になります。
単項プラス演算子を使用する
let str = "123";
let num = +str;
console.log(num); // 123
この方法も、文字列が数値に変換できない場合、結果はNaN
になります。
parseInt関数またはparseFloat関数を使用する
let str = "123.45";
let num = parseInt(str);
console.log(num); // 123
num = parseFloat(str);
console.log(num); // 123.45
parseInt
関数は整数を返し、parseFloat
関数は浮動小数点数を返します。どちらの関数も、文字列が数値に変換できない場合、結果はNaN
になります。
これらの方法を適切に使用することで、JavaScriptで文字列を数値に変換することが可能です。ただし、変換結果がNaN
になる可能性があることを常に念頭に置いておくことが重要です。次のセクションでは、NaN
について詳しく説明します。
NumberとparseIntの違い
JavaScriptでは、文字列を数値に変換するためにNumber
関数とparseInt
関数がよく使われます。しかし、これらの関数はいくつかの重要な違いがあります。
Number関数
Number
関数は、引数が数値に変換できない場合、NaN
を返します。
console.log(Number("123")); // 123
console.log(Number("123abc")); // NaN
parseInt関数
一方、parseInt
関数は、文字列の最初の数値を返します。数値以降の文字は無視されます。
console.log(parseInt("123")); // 123
console.log(parseInt("123abc")); // 123
また、parseInt
関数は第二引数に基数(数の進数)を指定することができます。
console.log(parseInt("11", 2)); // 3
これらの違いを理解することで、JavaScriptで文字列を数値に変換する際に、どの関数を使用するべきかを適切に判断することができます。次のセクションでは、NaN
について詳しく説明します。
NaNとは何か
JavaScriptでは、NaN
は「Not a Number」の略で、数値ではない値を表します。NaN
は特殊な値で、数値演算が定義できない結果を返すときに使用されます。
例えば、文字列を数値に変換しようとしたとき、その文字列が数値に変換できない場合、JavaScriptはNaN
を返します。
console.log(Number("abc")); // NaN
また、0で除算したときなど、数学的に定義できない演算を行った場合もNaN
が返されます。
console.log(0 / 0); // NaN
しかし、NaN
は一見すると奇妙な性質を持っています。それは、自分自身と等しくないという性質です。
console.log(NaN === NaN); // false
この性質は、NaN
を判定する際に注意が必要です。次のセクションでは、NaN
の判定方法について詳しく説明します。
NaNの判定方法
JavaScriptでは、NaN
は自分自身と等しくないという特性を持っています。これは、NaN
を判定する際に注意が必要な点です。
console.log(NaN === NaN); // false
この性質により、値がNaN
であるかどうかを直接比較することはできません。その代わりに、isNaN
関数を使用してNaN
を判定することができます。
console.log(isNaN(NaN)); // true
しかし、isNaN
関数は、数値に変換できない値すべてをNaN
と判定します。
console.log(isNaN("abc")); // true
これは、isNaN
関数が引数を数値に強制変換しようとするためです。そのため、isNaN
関数は文字列などの非数値をNaN
と判定します。
この問題を解決するために、ES6ではNumber.isNaN
関数が導入されました。Number.isNaN
関数は、引数がNaN
である場合にのみtrue
を返します。
console.log(Number.isNaN(NaN)); // true
console.log(Number.isNaN("abc")); // false
これらの関数を適切に使用することで、JavaScriptでNaN
を正確に判定することが可能です。この知識を持つことで、JavaScriptで数値を扱う際のエラーを防ぐことができます。次のセクションでは、さらに詳しく説明します。