2012年2月8日水曜日

[JavaScript] parseInt() と Number.toString() で 数値 <=> 文字列 変換

文字列を数値に変換 parseInt(string, radix)


数値を表す文字列を10進数の整数の値に変換するには、組み込みのparseInt() 関数を使います。
ユーザーからの入力や、jsonで受け取ったのデータを数値として扱う場合などは、必ずparseInt() で数値に変換してから、処理を行います。

sample (以下すべて chrome 16 で実行しました。)
console.log(parseInt("10px", 10));   //10 stringは、数値と解釈できる文字で始まっていれば、後の変換できない文字は無視される

console.log(parseInt("1111", 2));    //15
console.log(parseInt("0xFFFF", 16)); //65535

console.log(parseInt("hoge", 10));   //NaN 数値変換不能な文字列が与えられた場合は、NaN が返る


注意点としては、省略可能な第2引数の radix で、文字列が表している数値の基数を必ず指定することです。

もし radix を指定しないと、自動的に基数が判定されてしまうので、
たとえば、"010" など,"0" で始まる文字列を,頭の0を除いて10進数として扱いたい場合に、"010" は8進数の数値を表現している文字列と解釈され、8 が返されます。

sample
var str = "010"

//radix を省略した場合
console.log(parseInt(str));  //8 <= "010" が8進数をあらわす数値として解釈された

//"010" を10進数の数値として解釈
console.log(parseInt(str, 10)); //10

数値を文字列に変換する Number.toString(radix)


反対に、10進数で表された数値を、任意の基数で表された数値の文字列に変換する場合は、 NumberオブジェクトのtoString()メソッドを使います。
console.log( (15).toString(2) );     // "1111"
console.log( (65535).toString(16) ); // "ffff"

まとめ


  • 文字列を数値に変換するには、組み込み関数の parseInt(string, radix) を使う
  • parseInt の第2引数には、必ず、文字列があらわしている数値の radix を渡す!
  • parseIntの逆で、数値を文字列に変換したい場合はNumber.toString()

参照URL
Ecma-262.pdf 15.1.2.2 parseInt(string, radix)
http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-262.pdf

toString - MDN
https://developer.mozilla.org/ja/JavaScript/Reference/Global_Objects/Number/toString

0 件のコメント:

コメントを投稿