Kox Blog

バグを知り、業務を知らば、システム危うからず

ホーム 連絡をする 同期する ( RSS 2.0 ) Login
投稿数  243  : 記事  0  : コメント  925  : トラックバック  35

ニュース

広告

ブログパーツ

書庫

日記カテゴリ

リンク

凪瀬さんの以前のエントリで、
自分もはまった事あったなと思いつつ、どんなんだったけ?と思っていました。
それを先日思い出しましたので、備忘録として残しておこうかと思います。

javaのInteger.parseInt()とjavascriptのparceInt()の8進数に関する挙動。
java:

  Integer.parceInt( "08" );      //8を返す。
  Integer.parceInt( "08", 10 );  //8を返す。
  Integer.parceInt( "08",  8 );  //NumberFormatExceptionを返す。

javascript:

  parseInt( "08" );              //0を返す。
  parseInt( "08", 10 );          //8を返す。
  parseInt( "08", 8 );           //0を返す。
  parseInt( "8",  8 );           //NaNを返す。

 

javascriptでは計算処理をする場合に注意が必要。

投稿日時 : 2007年8月23日 11:26

コメント

# re: parseIntの挙動 2007/08/23 11:45 凪瀬
javascriptで8と9のときだけエラーになるってみんなが首をかしげているときがあって8進数になってたというオチのときがありましたね。
なんとなく桁をそろえようと頭に0をつけたのが運のつきw

# re: parseIntの挙動 2007/08/23 11:47 かつのり
これははまりますね。(JavaScript)
自分もよくparseIntに基数を入れ忘れるので、最近は、
String.prototype.toInt = function(defaultValue){
return parseInt(this, 10) || defaultValue || 0;
};
みたいなものを作って、parseIntを使わなくなりました。
失敗したら0でいいじゃんと。

これなら、
var foo = "012345".toInt();
見たいな感じで使えます。

# re: parseIntの挙動 2007/08/23 15:49 kox
ずいぶん前の話だったので完全に忘れていたのですが、
凪瀬さんのおかげで思い出すことができました。

Post Feedback

タイトル
名前
Url:
コメント