有馬@FITECです。 gotoken / math.sci.hokudai.ac.jp (GOTO Kentaro) wrote "[ruby-list:15004] 文字列から数値への変換失敗を検出したい" | >失敗した時に例外を上げるような to_i, to_f があるとよいのですが。 | | 僕もこういうのほしいです。 | | しかし、 to_f の方は strtod() を使ってるようだし例外にするの | は面倒そうですね。いちおう、strtod()の第2引数をNULL以外にす | ればできなくはなさそうですが。 string.c を見たところでは、rb_str_to_f の strtod で第2引数を調べて、 rb_raise させるのは簡単かと思ったのですが。 to_i の方も、bignum.c の rb_str2inum で そういう処理をしてくれると いいなあと思いました。 互換性を考えると、String#to_int, String#to_float のように違う名前で 作るのがいいのかも。 | とりあえずユーザーレベルでできそうなのは、0をあらわすリテラ | ルを正規表現をこさえて、0が返されたときにそれとマッチするか | 調べるくらいかなぁ。 とりあえず、float を表す正規表現をこさえましたが、これでいいのかな? e =~ /[-+]?((\d+)?(\.\d+))|((\d+)(\.\d+)?)([eE][-+]\d+)?/ -- 有馬 康弘 <fit0298 / fitec.co.jp>