chalcedony_htnの日記スマートフォン用の表示で見るchalcedony_htnの日記この広告は、90日以上更新していないブログに表示しています。2014-07-22parseIntとparseFloatの覚え書きJavaScript前フリが思いつかない件について。この記事の主旨は一言で言うと「parseIntには第2引数で基数を指定しよう」です。基本parseIntとparseFloatは、どちらも引数として渡された文字列をパースして数値に変換するグローバル関数。parseIntは整数、parseFloatは小数と整数の両方(浮動小数点数)を扱える。3.14パース方法とNaNparseIntとparseFloatは、どちらも引数の文字列を先頭から1文字ずつ確認し、数値と解釈できない文字が見つかった時点で、その直前までの部分を数値として返す。一文字も数値にできなかった場合はNaN(数値ではないことを表す数値型の値)を返す。わかりにくいので例を。parseIntはそこから小数点を除いたもの......ではなくて、実はもうちょっと複雑。parseIntの第2引数(基数)parseIntの引数として、パースしたい文字列のほかに、「何進数として解釈するか」という基数を渡すことができる。基数は文字列でなくて数値で渡すことに注意。21同じ"15"という文字列を、10進数、8進数、16進数でパースした値が返ってくる。基数の指定によって、数として解釈できる文字は変わってくる。複雑と言ったのはこのこと。414基数を省略した場合、通常は10進数でパースされる。省略するとけっこう危険だったりする。基数を省略した場合もしくは、基数に0を指定した場合、自動的に以下のように解釈されることが多い。"0x"または"0X"で始まる文字列が渡された場合、基数は16(16進数)と解釈される。"0"で始まる文字列が渡された場合、基数は8(8進数)と解釈される。その他の文字で始まる文字列が渡された場合、基数は10(10進数)と解釈される。(8進数だとNaNになるので10進数で解釈)※実装によるあるでしょう、ノンブルとかで先頭をゼロで埋めてるやつ。それをうっかりparseInt(textframe.contents)なんてやってしまうと、ページによって変な数値が返ってくる可能性があるということ。先頭の文字列が"0x"なら16進数、というのは、JavaScript(というか、ECMAScript)の仕様として規定されている。実は先頭が"0"の場合は、「8進数にしてもいいよ(どっちかいうと10進数でやってね)」ということになっていた。実装では8進数を採用したものが多いけど、確実ではないらしい。実行する環境によって結果がまちまちということ。さっきから※実装によるって書いてるのはそういうことです。いちおう現在の最新の仕様では、"0x"と"0X"を16進数とするのを除けばデフォルトは10進数、と定められている。実装のほうは今のところほとんど追いついてないらしい。AdobeのESTKでも8進数になるしね。大事なことなので2回いいました。ちなみにparseFloatは常に10進数で、基数指定はできません。20:49parseIntとparseFloatの覚え書きTweet広告を非表示にする関連記事2015-02-25InDesignのDOMをprototypeで拡張するメモ自分で書かないと忘れるのでメモしておきます。Paragra...2014-07-25PhotoshopドキュメントをJavaScriptで別名保存するたまにはアプリケーションに特化したことを書こうのコーナーで...2014-05-07JavaScriptのArray.sort覚え書きお蔵出しシリーズ3。いつだか忘れたけど昔書いて、2013年5月に...2014-04-07JavaScriptのループ文まとめお蔵出しシリーズ2。ExtendScriptのプリプロセッサディレクティブ月別アーカイブはてなブログをはじめよう!chalcedony_htnさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。