有馬@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>