SOFTELメモ

Softel Inc.

【JavaScript】数値→文字列、文字列→数値の変換

問題

JavaScriptでの、数値→文字列、文字列→数値の変換はどうするのがいいですか。

答え

数値→文字列

var num = 123;

String(num); // "123"
num.toString(10); // "123"
num.toFixed() // "123"

num + ''; // "123"
'' + num; // "123"
var num = 123.45678;

String(num); // "123.45678"
num.toString(10); // "123.45678"
num.toFixed() // "123"

num + ''; // "123.45678"
'' + num; // "123.45678"
var num = -9999999123.45678;

String(num); // "-9999999123.45678"
num.toString(10); // "-9999999123.45678"
num.toFixed() // "-9999999123"

num + ''; // "-9999999123.45678"
'' + num; // "-9999999123.45678"

文字列→数値

var str = '123';

Number(str); // 123
parseInt(str, 10); // 123
parseFloat(str); // 123

str - 0; // 123
str * 1; // 123
str / 1; // 123

+str; // 123
-(-str); // 123
~~str; // 123
str&-1; // 123
str|0; // 123
str^0; // 123
str>>0; // 123
str<<0; // 123
var str = '123.45678';

Number(str); // 123.45678
parseInt(str, 10); // 123
parseFloat(str); // 123.45678

str - 0; // 123.45678
str * 1; // 123.45678
str / 1; // 123.45678

+str; // 123.45678
-(-str); // 123.45678
~~str; // 123
str&-1; // 123
str|0; // 123
str^0; // 123
str>>0; // 123
str<<0; // 123
var str = '-123.45678';

Number(str); // -123.45678
parseInt(str, 10); // -123
parseFloat(str); // -123.45678

str - 0; // -123.45678
str * 1; // -123.45678
str / 1; // -123.45678

+str; // -123.45678
-(-str); // -123.45678
~~str; // -123
str&-1; // -123
str|0; // -123
str^0; // -123
str>>0; // -123
str<<0; // -123
var str = '-9999999123.45678';

Number(str); // -9999999123.45678
parseInt(str, 10); // -9999999123
parseFloat(str); // -9999999123.45678

str - 0; // -9999999123.45678
str * 1; // -9999999123.45678
str / 1; // -9999999123.45678

+str; // -9999999123.45678
-(-str); // -9999999123.45678
~~str; // -1410064531
str&-1; // -1410064531
str|0; // -1410064531
str^0; // -1410064531
str>>0; // -1410064531
str<<0; // -1410064531

結局どれがよいか

数値 → 文字列(あまり必要ない気はする)

'' + num

文字列 → 数値

str - 0
+str

このあたりがよいと思います。

関連するメモ

コメント