2010年2月8日月曜日

Integer.parseIntとオーバーフロー

String型で取得した数値をint型の数値に変換しちゃうぜ!こりゃ便利だぜー!とInteger.parseIntを使いまくっていたら落とし穴があった。世の常。
int型って、数字の有効桁数というか有効値があって、こちらの意図してなかったような大きな数値が入ったりするとプログラムがおかしくなる。
ちなみに-2147483648~+2147483647の範囲。
んで、これの対策のためにどうやってプログラムを書けばいいのか?考えてたけど、いまいちよくわからなかったので、とりあえず付け焼刃的にint型じゃなくて、もう少し数値の範囲に余裕のあるlong型に変換して、それでもダメな場合は、「有効範囲越えてまっせー!これ以上はもうやめてええええええ!」と出力するという対策しか頭がまわらなかった。プログラム奥深ぇ。

0 件のコメント:

コメントを投稿