文字列を数値に変換する:JavaScript

文字列を数値にします。

方法はいろいろありますが、ざっくり以下の使い分け。
数字だけの文字列 → Number、あるいは数値演算(非推奨)
数字以外も含む文字列から整数→ parseInt
数字以外も含む文字列から小数 → parseFloat
10進数以外も使う場合 → parseInt
指数表現(何乗とか)を使う場合 → parseFloat。

parseInt

文字列内の数字を数値(整数)に変換

var result=parseInt(str);
var result=parseInt(str,10);
parseInt( 文字列 , 基数 )

文字列を数値に変換

引数1 文字列 変換したい文字列。
引数2 基数
[省略可]
変換前の数値を何進数で表現しているか。2〜36を指定。
※省略した場合は自動判別。「0x」「0X」で始まる場合は16進数、0で始まる8と9を含まない数字は8進数、それ以外は10進数。

先頭から、数値でない文字が現れる直前までの数字を整数に変換。先頭と末尾の空白は無視されます。

先頭の文字が数値でない場合、空文字の場合、変換できない場合はNaN。

数値とみなされるのは、先頭の「+」「-」、数字、10進数以上の場合は使用されるアルファベット(16進数ならA〜F)

123匹 → 123
123匹45 → 123
約123匹 → NaN (先頭の文字がダメ)
-77uzula → -77
123.55 → 123(小数点以降は読まない)
314e-2 → 314(指数表現はアウト)

四捨五入でないことに注意。小数点がきたら数値じゃない文字になるのでそこで終了。切り捨てになります。

基数は指定しておこう

基数指定なしだと先頭の文字列によって、8進数だったり16進数だったり10進数だったりと変化します。

先頭0の10進数はわりとありそうですが、8進数にされてしまいます。でも8や9を含んでいればそこだけ10進数。

先頭が0でもすべてが8進数ではない。
011 → 9 (8進数として)
09 → 9 (10進数として)
先頭が0x以外の16進数は読まない
F → NaN
3F → 3
0xC → 12
0x5C → 92
0x3F→ 63
意図しない変換をしないように基数はきちんと指定しましょう。

計算ツール

Illustratorで10進数以外を使うことってないと思いたいけど、もし使う場合は相互に変換できる便利ツールがネット上にたくさんあるのでその一例。

進数変換電卓
暇つぶしを支援する無料Flashゲームやツールを配信

parseFloat

文字列の数字を数値に変換

result=parseFloat(str);
parseFloat( 文字列 )
引数1 文字列 変換したい文字列

先頭から、数値でない文字が現れる直前までの文字列の数字を整数に変換。先頭と末尾の空白は無視されます。

先頭の文字が数値でない場合、空文字の場合、変換できない場合はNaN。
ここまではparseIntと同じ。

数値に含まれるのは、先頭の「+」「-」、数字、小数点「.」、指数表現の「e」。

ということでparseFloatは小数点以下も扱えるし(小数点以下が「.0」の場合は省略)、指数表現も使えます。

指数は10の何乗とかいうやつ。例えば10のマイナス16乗は「e-16」と表現。

123匹 → 123
123匹45 → 123
約123匹 → NaN
-77uzula → -77
123.45 → 123.45
123.0 → 123
314e-2 → 3.14
Infinity → Infinity

10進数以外は使えません。

Number

 

Number( 文字列 )
引数1 文字列 変換したい文字列

先頭と末尾の空白は無視されます。

数値でない文字が含まれている場合、空文字の場合、変換できない場合はNaN。

数値とみなされるのは、先頭の「+」「-」、数字、小数点「.」、指数表現の「e」。0xで始まる場合はA〜Fのアルファベット(16進数となります)

123匹 → NaN
123匹45 → NaN
約123匹 → NaN
-77uzula → NaN
123.45 → 123.45
123.0 → 123
314e-2 → 3.14先頭が0でも関係ない。8進数にならない。
011 → 11
09 → 9先頭が0xは16進数。それ以外は16進数にならない。
F → NaN
3F → NaN
0xC → 12
0x5C → 92
0x3F→ 63

基数の指定はできないけれど、0x始まりは16進数として解釈します。それ以外は10進数です。

数値演算による型変換

文字列を数値演算すると数値に自動的に変換されるというの利用する方法。

「-」や「*」などで計算するだけ。ただし+は使えない(文字列の連結になる)

result=str - 0; 
result=str * 1; 
result=str / 1; 
result=+str; 
result=-(-str); 
result=~~str; 
result=str&-1; 
result=str|0;
result=str^0;
result=str>>0; 
result=str<<0;
数値とみなされるのは、先頭の「+」「-」、数字、小数点「.」、指数表現の「e」。0xで始まる場合はA〜Fのアルファベット(16進数となります)
数値以外が含まれていればNaN。
短くすむけど、何やってるかわかりにくいので、ちゃんとparseIntなどを使った方がいいらしいです。
タイトルとURLをコピーしました