From: Yui NARUSE Date: 2010-10-25T10:13:42+09:00 Subject: [ruby-dev:42455] [Ruby 1.9-Bug#3978] String#scanf (lib/scanf.rb) で '0x2.p+2' に '0x2.0p+2' と同様の解釈が与えらえる チケット #3978 が更新されました。 (by Yui NARUSE) Scanf#scanf の説明を見ると、 scanf for Ruby is an implementation of the C function scanf(3),$ modified as necessary for Ruby compatibility. とあります。 ここで、C99 を見ると以下の通りであり、2.e+2 は 200.0 と解釈されるように見えます。 これを 2.0 と解釈するのは「modified as necessary for Ruby compatibility」の範囲外のように思えます。 つまり、わたしは 指数表現の方を直そうと思っているのですが、どう思いますか。 6.4.4.2 Floating constants Syntax floating-constant: decimal-floating-constant hexadecimal-floating-constant decimal-floating-constant: fractional-constant exponent-partopt floating-suffixopt digit-sequence exponent-part floating-suffixopt hexadecimal-floating-constant: hexadecimal-prefix hexadecimal-fractional-constant binary-exponent-part floating-suffixopt hexadecimal-prefix hexadecimal-digit-sequence binary-exponent-part floating-suffixopt fractional-constant: digit-sequenceopt . digit-sequence digit-sequence . exponent-part: e signopt digit-sequence E signopt digit-sequence ---------------------------------------- http://redmine.ruby-lang.org/issues/show/3978 ---------------------------------------- http://redmine.ruby-lang.org