parseInt関数は引数を整数値に変換する

parseInt(string);
parseInt(string, radix);

第1引数stringには整数値に変換する文字列を渡す

  • 文字列でなかった場合はToStringで文字列に変換される。
  • 先頭のホワイトスペースは無視される。
  • 先頭のホワイトスペース以外の文字が数値に変換できない場合、関数はNaNを返す。
  • ホワイトスペースを取り除いた後先頭に来る正負の符号を認識できる。

第1引数stringに数値を渡した場合、一度文字列に変換されてから整数に変換されるため、小数などを指定して指数表記になると正しく変換されない。

parseInt(0.000005);  // 0 [ToString(0.000005)  === '0.000005']
parseInt(0.0000005); // 5 [ToString(0.0000005) === '5e-7']

第2引数radixには整数値に変換するときの基数を渡す

  • Number型以外の場合はNumberに型変換される。
  • 2から36までの整数以外を渡した場合、関数はNaNを返す。
  • 10以上の基数を指定した場合は、9より大きい数字はアルファベットで示される。
  • 先頭から解析して解析可能な英数字以外の文字が現れた時点でそれ以降の文字は無視される。

第2引数radixが省略された場合、または、Numberに変換した結果0NaN (undefined), Infinityのいずれかになる場合、string0xまたは0Xから始まる場合は16進数、それ以外は10進数として変換する。

parseInt('0xF'); //  15
parseInt('111'); // 111

数値の整数部を取り出すにはMath.truncを使用する

parseIntは文字列を引数にすることを前提にしているため変換元が数値の場合はMath.truncで整数部を取得する。

Math.trunc(0.000005);  // 0
Math.trunc(0.0000005); // 0

Number関数は文字列全体が数値でない場合NaNを返す

Number関数に文字列を渡すと全体が数値の場合は数値に変換し、そうでない場合はNaNを返す。2進数、8進数、16進数も扱える。

Number('123a'); // NaN
Number('0xFF'); // 256