正木です。

In message "[ruby-math:00825] Re: -3**2 == 9 ?"
    on 03/01/07, Yukihiro Matsumoto <matz / ruby-lang.org> writes:

|たびたびすいません。思い出してきました。これをやると
|
|  -1.5.floor
|
|
|
|  -(1.5.floor)
|
|と解釈されるので止めたのでした。Rubyではこういうケースの方が



  -1.5.floor ==  (-1.5).floor

という仕様になっているとは知りませんでした。

  -1.5.floor ==  -(1.5.floor)

だと思っていました。

-1.5 の floor だったら普通

 (-1.5).floor

と書きそうな気がします。

|数学的表記を考えると
|
|  -3**2 == -9
|
|は譲れないのだろうとは思いますが。

絶対に譲れないというほどのことではないですが、

  -3**2 == -9

は不合理で

  -3**2 == (-3)**2 

であるべきだと考えて仕様を変更するのなら構いませんが、実装上の都合で
かえるのは賛成しかねます。普通とは逆の仕様だと気付くまで無駄な時間を
使わせることになりますので。

今思い付いて

ruby -e "a=3 ;p -a**2"

としてみたら、これは

 -9

になりますね。