JavaScript: 文字列から数値への変換とNaNの理解

文字列から数値への変換

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で数値を扱う際のエラーを防ぐことができます。次のセクションでは、さらに詳しく説明します。

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

上部へスクロール