From: EGUCHI Osamu Date: 2002-01-25T18:26:31+09:00 Subject: [ruby-dev:15759] Re: 文字列→整数変換 えぐち@エスアンドイー です。 多い昔、この方言を提案した記憶があるので、参加させてください。 >>> In message [ruby-dev:15757] 文字列→整数変換 On Fri, 25 Jan 2002 17:35:02 +0900, nobu.nakada@nifty.ne.jp said: |ruby-devに振ります。StringからInteger,Floatへの変換を関数やメソッ |ド、parserで統一しようという話です。 | |At Fri, 25 Jan 2002 16:57:42 +0900, |matz@ruby-lang.org (Yukihiro Matsumoto) wrote: |> まず、仕様を決めて、それから実装について考えましょう。 |> |> で、繰り返しになりますが、Integer()とFloat()については「数字 |> と数字の間に連続しない _ を許す」というのではどうだろうか、 |> というのが私の考えです。 賛成です。 「14000000 を 14_000_000と書けると桁数の錯誤が少ない」 と言うのが動機(の1つ)だったので、複数あるいは前後には 置けないのは、従来書かれたスクリプトとの互換性に問題を 生じるケースは稀だと思われます。 |> to_iとto_fについてはまだ決めていません。選択肢としては |> |> (1) _ の処理については Integer()/Float() と同様、基準を満た |> さないものはゼロになる。 |> |> (2) こちらは連続する _ を許す、つまり文字列から _ を取り除 |> いてから整数化あるいは浮動小数点数化する |> |> のいずれかくらいかなあと思います。個人的には前者に心引かれて |> います。って、こういう話は ruby-dev でした方が良いのかな。 | |こんな感じでしょうか。 | |* eval/parser, Integer(), Float() | 各数字間に高々一個の'_'が許される。符号の後、'.','e'の前後(浮 | 動少数点数の場合)には許されない。 それから、「符号の後」は、 -@ なので数値の前に過ぎない気がします。 あと、浮動小数は 'E', 'g' それに 'G' の前後もですね。 |* String#oct, String#hex, String#bin | 基数を限定する以外はInteger()と同じ。octでは2,8,16進数の自動 | 判別。 String#oct の自動判別しらなかったです。 なぜ oct 自動判別して hex はしないんでしょう。 String#binってありましたっけ? |* String#to_i(radix = 10) | radixを基数として変換する。有効な基数は2,8,10,16。8を指定して | も#octと違ってprefixは見ない。例外を発生させるかわりに0を返す。 | |* String#to_f | Float()と同じだが、例外を発生させるかわりに0.0を返す。 | |# こうしてみるとString#decとString#floatが欲しいかも。 直行性を考えると、私もそう思います。 #曖昧でなければ えぐち