えぐち@エスアンドイー です。

>>> In message [ruby-list:15004] 文字列から数値への変換失敗を検出したい
    On Mon, 14 Jun 1999 16:21:39 +0900, gotoken / math.sci.hokudai.ac.jp (GOTO Kentaro) said:

gotoken> ごとけんです
gotoken> 
gotoken> In message "[ruby-list:15003] 文字列から数値への変換失敗を検出したい"
gotoken>     on 99/06/14, ARIMA Yasuhiro <fit0298 / fitec.co.jp> writes:
gotoken> 
gotoken> >文字列が数値に変換可能かどうかを判断するために、文字列から数値への
gotoken> >変換失敗を検出したいと思ったのですが、to_i, to_f では、0 にして
gotoken> >しまうようです。どうするべきでしょうか?
gotoken> 
gotoken> これって結構不便ですよね。
gotoken> 
gotoken> >失敗した時に例外を上げるような to_i, to_f があるとよいのですが。
gotoken> 
gotoken> 僕もこういうのほしいです。

同感です。

はじめの頃、
	「nil か false を返してくれるといいなぁ」
と思っていましたが、例外を返すのがモダンですね。

gotoken> しかし、 to_f の方は strtod() を使ってるようだし例外にするの
gotoken> は面倒そうですね。いちおう、strtod()の第2引数をNULL以外にす
gotoken> ればできなくはなさそうですが。

『strtod()の第2引数』とあり、考えたですけど、

「変換された数値」
	と
「変換対象にならなかった残りの部分文字列」

の対を Array で返してくれるメソッドがあると、
ちょっと便利かなと思います。

gotoken> とりあえずユーザーレベルでできそうなのは、0をあらわすリテラ
gotoken> ルを正規表現をこさえて、0が返されたときにそれとマッチするか
gotoken> 調べるくらいかなぁ。

Ruby の零を表す文字リテラルの正規表現って結構むづかしいですね
ちょっと考えただけで、下のようなケースに対応しないといけない。

 o +/-や空白が先行する場合
 o 基数が 2,8,10,16 のそれぞれの場合
 o '_' を任意の位置に詰めものとして入れられる

あと、to_f は小数点と指数も扱いますね ^^;;;

	えぐち