« 2011年10月 | トップページ | 2012年2月 »

2011年12月

JavascriptのParseIntに騙されないで

Javasctiptのように、型の宣言がない言語で問題になるのは数値なのか数字(数の文字列)なのか勝手に判断して処理してくれちゃうことです。

表示の都合上前ゼロを付けているのだけど、実際は計算に使う数字だったりして、その場合、ものの本(や、解説サイト)では 数値に変換するのにparseIntを使うとよい、などと教えてくれたりしています。

しかし!!

perseIntでは "001"という文字列を "1"としてはくれるものの、"011"はなぜか "9" になっちゃいます。
evalも然り。

前ゼロ処理された2ケタ以上の文字列は正しく変換できないみたいです。

前ゼロを削除する関数とか作っちゃえばいいんですけども、面倒くさいし。。。

ということで、お悩みのかたのために、私が前からひそかにやっていた方法を伝授。

その方法とは。

1を掛けちゃうんですね!!

×  var num1=parseInt(document.keisan1.elements[0].value);

○  var num1=parseInt(document.keisan1.elements[0].value * 1);

ということです。

超簡単なんですが、いつもGoogle先生やものの本をうっかり信じてしまって、5~6分ほどハマってから「あっ、そうだった」って感じなので覚書しときます。

| | コメント (2) | トラックバック (0)

« 2011年10月 | トップページ | 2012年2月 »