From: Kenta@..., Murata@... Date: 2014-01-13T17:03:28+00:00 Subject: [ruby-core:59742] [ruby-trunk - Bug #9316] BigDecimal division in Ruby 2.1 Issue #9316 has been updated by Kenta Murata. This behavior change had been introduced from the version 1.2.2, which was released on 2013-11-22. This change can be thought as a bug fix for the former behavior which calculates too many digits. I thought so when I implemented it. For example, BigDecimal("1472.0") is 5-digit floating-point number and BigDecimal("0.99") is 2-digit floating-point number, so the result of BigDecimal("1472.0") / BigDecimal("0.99") has three exact digits and one ambiguous digit. The reason why I implemented this behavior is that the "/" operator cannot determine the precision of the quotient generally because it cannot obtain the 2nd parameter to get the precision. However, since the current precision system isn't strictly implemented, I think the current behavior is too strict for practical use. For instance, BigDecimal("0.1200") cannot represent a 4-digit floating-point number in the current implementation. So I'll fix it soon, but I'll put it back after I make the precision system more strict. ---------------------------------------- Bug #9316: BigDecimal division in Ruby 2.1 https://bugs.ruby-lang.org/issues/9316#change-44266 * Author: Andre Bernardes * Status: Assigned * Priority: Normal * Assignee: Kenta Murata * Category: lib * Target version: current: 2.2.0 * ruby -v: ruby 2.1.0p0 (2013-12-25 revision 44422) [x86_64-darwin13.0] * Backport: 1.9.3: UNKNOWN, 2.0.0: UNKNOWN, 2.1: UNKNOWN ---------------------------------------- =begin When updating an app to Ruby 2.1, and I ran into the following difference between ruby 2.0.0-p353 and ruby 2.1.0 when dividing two BigDecimals: ((*Ruby 2.0.0p353:*)) 2.0.0p353 :002 > (BigDecimal.new("1472.0") / BigDecimal.new("0.99")).to_f => 1486.868686869 ((*Ruby 2.1.0p0:*)) 2.1.0p0 :006 > (BigDecimal.new("1472.0") / BigDecimal.new("0.99")).to_f => 1487.0 =end -- http://bugs.ruby-lang.org/