From: Shigeo Kobayashi Date: 2003-07-30T12:26:59+09:00 Subject: [ruby-dev:21010] Re: [BigDecimal] conflict between Numeric#div and BigDecimal#div 小林です。 ----- Original Message ----- From: "Yukihiro Matsumoto" Subject: [ruby-dev:21009] Re: [BigDecimal] conflict between Numeric#div and BigDecimal#div > まつもと ゆきひろです > |> | * divmod divfloor と その剰余 現状の BigDecimal#divmod はこれです。 ただ、手元にあるもので試すと、実際は  Java/JavaScript: 3 % (-4) => 3,  5 % (-4)  => 1 VB: 3 Mod (-4) => 3, 5 Mod (-4) => 1 Float:   3 % (-4) => -1, 5 % (-4) => -3 BigDecimal(divfloor ): 3 % (-4) => 7, 5 % (-4) => -3 です。どうも Java や VB は x % y = x - y*(x/y).truncate のようですね。 x % y = x - y*(x/y).floor が正式と聞いた覚え があるんですが。こうなると「定義したように動作」すればいい ような気もします。 > しかし、上記の名前ではBigDecimalのdiv問題は解決しませんよね。 取りあえず quo と div が逆になれば、後は BigDecimal 側でなん とかなる思います。/ より div を重視するなど親和性も高いかと。 BigDecimal#div の第二引数をオプションにするとか、divmod や % も含めて Numeric と合わせるのは次回ですが。 > それについてはどうしましょう。というか、もしかしてNumericで > ある必然性は薄かったりします? 結構独自のメソッドが多くなっ > てますし。 0.5.divmod(0.4) # => [1.0, 0.1] のことですね、微妙ですねぇ。 個人的にはきらいではないです。 BigDecimalで使う人がいるかというと、...これも微妙ですが、 「首尾一貫」という観点からはあった方がいいんでしょうね。 ------------------ 小林 茂雄 shigeo@tinyforest.jp