Project

General

Profile

Bug #9689

(BigDecimal + Float) no longer commutative due to #7176

Added by saurik (Jay Freeman) over 5 years ago. Updated almost 3 years ago.

Status:
Closed
Priority:
Normal
Target version:
-
ruby -v:
ruby 2.0.0p299 (2013-08-29) [x86_64-linux-gnu]
[ruby-core:61788]

Description

So, there was a bug filed a while back (#7176) about Rational + BigDecimal failing, despite BigDecimal + Rational working.

https://bugs.ruby-lang.org/issues/7176

When this bug was fixed (in r37406), the new BigDecimal#+ also (I believe unnecessarily) converts Float to BigDecimal, making BigDecimal + Float return a BigDecimal despite Float + BigDecimal returning a Float. Given that work was put in to make BigDecimal + Rational commutative it seems like the same behavior should be in place for BigDecimal + Float: preferably, either both should be commutative, or neither should be commutative. (Please understand that I filed this as a "Bug", as this seems like a regression from the earlier behavior, but I would not at all quibble if someone decided that this should actually be classified as a "Feature" instead.)

(BTW, while doing due diligence on this issue, I determined that there was a previous bug #2129 that was filed against Rational + BigDecimal years ago that has almost the same description as 7176. At the time, Rational + BigDecimal returned a Rational; I think this is the more correct behavior, because any BigDecimal can be represented as a Rational, but not all Rationals can be represented as a BigDecimal. As a concrete example, 1/9 has no BigDecimal representation. Given that this behavior has already changed before, it seems like a fix for the commutativity of Float+BigDecimal should probably also deal with this other problem.)

https://bugs.ruby-lang.org/issues/2129

History

Updated by mrkn (Kenta Murata) over 5 years ago

  • Assignee set to mrkn (Kenta Murata)

Updated by zzak (Zachary Scott) about 5 years ago

  • Category set to ext
  • Status changed from Open to Assigned
  • Target version set to 2.2.0

Updated by mrkn (Kenta Murata) almost 3 years ago

  • Status changed from Assigned to Closed

This is fixed in the latest master branch of ruby/bigdecimal.

Also available in: Atom PDF