24
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

JavaScript: Number()が数値型に変換できる文字列

Last updated at Posted at 2022-04-03

JavaScriptのNumber関数は文字列を受け取り、それをパースして数値型の値を返すことができる関数です。文字列から数値型への変換するのに便利です。

Number1231.23のような数字だけからなる単純な文字列以外に、様々な文字列フォーマットにも対応しています。そのため、入力文字列のパターンが限定できていない場合、想定外の値になってしまうといった問題に遭遇する可能性があります。

Numberで文字列→数値への変換を行う場合は、Numberの仕様を理解した上で、想定外の結果にならないよう、追加の処理を加えたほうが良さそうです。たとえば、ユーザー入力など、入力文字列のパターンが無数に考えられる文字列を扱う場合は、Numberに渡す前に正規表現などでバリデーションするなど。

空文字列

空の文字列は0になります。

console.log(Number(""));
//=> 0

空白文字だけからなる文字列

半角スペース、全角スペース、タブなどの空白文字だけからなる文字列は0になります。

console.log(Number("\t\f\v\u{20}\u{3000}\u{FEFF}"));
//=> 0
// \u{20} ... 半角スペース
// \u{3000} ... 全角スペース
// \u{FEFF} ... Zero Width No-Break Space (BOM, ZWNBSP)

前後に空白文字がある文字列

前、うしろ、または、前後に空白文字は無視されます。

console.log(Number("  1  ")); 
//=> 1

符号

+-の符号がついたものもパースできます。

console.log(Number("-1")); //=> -1
console.log(Number("+1")); //=> 1
console.log(Number("-0")); //=> -0
console.log(Number("+0")); //=> 0

2進数表記

0bまたは0Bではじまる2進数表記の文字列がパースできます。

console.log(Number("0b10"));
//=> 2

8進数表記

0oまたは0Oではじまる8進数表記の文字列がパースできます。

console.log(Number("0o10"));
//=> 8

16進数表記

0xまたは0Xではじまる16進数表記の文字列がパースできます。

console.log(Number("0x10"));
//=> 16

Infinity

文字列"Infinity"は、数値型のInfinityになります。

console.log(Number("Infinity"));
//=> Infinity

小数

console.log(Number("1.1"));
//=> 1.1

ドットで始まる文字列

.で始まり、数字が続く文字列は小数としてパースされます。

console.log(Number(".1"));
//=> 0.1

指数表記

e2e-2e+2などの指数表記がパースできます。

console.log(Number("1e2")); //=> 100
console.log(Number("1e+2")); //=> 100
console.log(Number("1e-2")); //=> 0.01

組み合わせ

上のいろいろを組み合わせた場合もパースできるパターンがあります。

// 16進数表記 + 前後空白文字
console.log(Number("\u{3000}0x10\r\n"));
//=> 16

// 符号 + ドット始まり小数 + 指数表記
console.log(Number("-.123e+2"));
//=> -12.3

// 符号 + Infinity + 空白文字
console.log(Number("-Infinity\t"));
//=> -Infinity
24
8
5

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
24
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?