BigDecimal#coerce: unexpected behavior with Float
I've noticed that:
BigDecimal('2') + 1 # => BigDecimal(3), OK 1 + BigDecimal('2') # => BigDecimal(3), OK # whereas BigDecimal('2') + 1.1 # => BigDecimal(3.1), OK 1.1 + BigDecimal('2') # => Float(3.1), WHY?
I was expecting the latest to return a BigDecimal but it retuns a Float. In the unit tests for bigdecimal, one can find the following test:
assert_equal(2, 1 + BigDecimal.new("1"), '[ruby-core:25697]')
May be this behavior is required but I haven't found any reason for this.