JavaScriptでparseIntする場合は基数を指定しよう

JavaScriptでparseIntする場合は基数を指定しよう

鳥よし

鳥よし

こんにちは、プログラマーの鳥よしです。

今日は、つい最近JavaScriptで落とし穴に落ちた話を書きます。

落とし穴とは

ある日、僕はどうしてもJSで2桁表示の文字列をparseInt()したい場面に遭遇しました。
何も考えていない僕はparseInt(“01”)とブッこんで、実際に動作確認に入りました。
parseInt(“01”)、parseInt(“02”)、parseInt(“03”)・・・
順調に動作確認が進みました。

あるときです、恐ろしい現象が起こってしまったのです。
parseInt(“08”)にきたとき、結果が「0」となりました。
何を言ってるんだお前は・・・
見なかったことにしてparseInt(“09”)に行きました。
またしても結果は「0」・・・

もしやこれは噂の「疲れ目」って奴だな!

気を取り直してparseInt(“10”)に行ったとき、今まで起きていた現象はピタリとおさまりました。

ビビらせやがって・・・
そう思ってもう一回parseInt(“08”)を試してみると、結果は「0」・・・

なん・・・だと・・・?

原因

何でこうなったかっていうと、parseInt()は第二引数で基数を設定できるんですよね。
ちゃんとここに来るのは10進数なんだよって教えてあげないと、0から始まる文字は8進数と解釈されてしまうようです。

parseInt("08", 10);

これでちゃんと結果が8になりました。

ちなみに

以下のブラウザで確認したところ、各ブラウザによってデフォルトの基数が違うようでした。

  • Firefox 8進数
  • Chrome 10進数
  • IE9 10進数
  • Opera 8進数
  • Safari 10進数

ではまた。

LIGはWebサイト制作を支援しています。ご興味のある方は事業ぺージをぜひご覧ください。

Webサイト制作の実績・料金を見る

この記事のシェア数

全国に展開する居酒屋「鳥よし」グループの総帥を務めています。加盟店舗数2000軒突破(推定)。現在加盟店を絶賛募集中です。

このメンバーの記事をもっと読む
デザイン力×グローバルな開発体制でDXをトータル支援
お問い合わせ 会社概要DL