From: GOTO Kentaro Date: 2008-05-01T00:26:12+09:00 Subject: [ruby-dev:34550] Re: 0**-1 == 0 ? うーむ、それ単体なら潔いかもしれませんが 他にはよりプラグマティックなところもあると思います。 バランスを考慮しても潔しとできそうですか。 # つくばで数値の会合とか持てないですかねえ ごとけん On 5/1/08, Tanaka Akira wrote: > In article <56838ac20804300741r3b208aecy35815c8bdd21fae8@mail.gmail.com>, > "GOTO Kentaro" writes: > > > x→+0 のとき 1/x→+∞ なので、 > > 2**-1 == 0.5 ならば 0**-1 == 1.0/0.0 は候補でしょうね。 > > それって rational が入ってないときの挙動ですよね。 > > % ruby-1.8 -e 'p 0**-1' > Infinity > > > ただし無限大を表現する方法が現状では > > Float以外に存在しないのは気がかりです。 > > rational が入ると Rational(1, 0) になっていたのはそういう気 > がかりがあったからのようです。[ruby-dev:20907] > > % ruby-1.8 -rrational -e 'p 0**-1' > Rational(1, 0) > > 件のテストはこの段階までを考慮していたので 0 と異なるという > 条件だったわけです。 > > ところが、[ruby-dev:34524] の対処で 0**-1 が > ZeroDivisionError になりました。 > > % ./ruby -ve 'p 0**-1' > ruby 1.9.0 (2008-04-30 revision 16239) [i686-linux] > -e:1:in `**': devided by zero (ZeroDivisionError) > from -e:1:in `**' > from -e:1:in `
' > > それにより件のテストがエラーになって、この話題が出てきたわけ > ですが、私はいさぎよい選択だと感じました。 > -- > [田中 哲][たなか あきら][Tanaka Akira] > >