From: Tadayoshi Funaba Date: 2010-08-10T22:16:30+09:00 Subject: [ruby-dev:41975] Re: [ruby-cvs:36157] Ruby:r28955 (trunk): * complex.c (nucomp_to_[ifr]): don't allow complex with in-exact > これを戻されたということは、(1+0.0i)は整数に変換できてはいけ > ないというご意見なのだと思いますが、その根拠を教えて頂けませ > んか。私は、0.0と判定できる(整数ゼロと==で判定される)場合には、 > 誤差のことを考慮する必要がないので、虚数部は存在しないと考え > て、実数とみなしても問題ないと思っています。ので、リバートし > ないでほしいです。 元々 mathn のような環境になった場合、変換するまでもなく虚部がなくなって いる (実装的に) はずのものは変換できるようにしておこうとだけのもだった ので。 で、虚部が浮動小数点数のときは変換しないようにしてあったので元に戻した だけです。この振舞いは Common Lisp や Scheme なんかを参考にしました。零 といっても、-0.0 もあるので、CMath.sqrt(Complex(-4.0,-0.0)) のような場 合にただの -4.0 とは違いがはっきり出てしまいます。 to_i などでどうすべきかは議論があると思いますが、僕はそういう考えで mathn 的な環境に移行した後でも冗長になるだけで問題は少なそうだと特別に 許していただけでしたが、とくに議論もなく修正されたものを元に戻しただけ です。 今のところ、僕は再度修正するつもりがないですが、やはり修正したいという ことであれば、議論をするなり、勝手に修正するなり御自由にしてください。