From: nagachika00@... Date: 2018-02-03T02:05:23+00:00 Subject: [ruby-core:85354] [Ruby trunk Bug#13928] Calling Integer.fdiv with BigDecimal returns unexpected result Issue #13928 has been updated by nagachika (Tomoyuki Chikanaga). Backport changed from 2.2: DONTNEED, 2.3: DONTNEED, 2.4: REQUIRED to 2.2: DONTNEED, 2.3: DONTNEED, 2.4: DONE ruby_2_4 r62171 merged revision(s) 59986. ---------------------------------------- Bug #13928: Calling Integer.fdiv with BigDecimal returns unexpected result https://bugs.ruby-lang.org/issues/13928#change-70138 * Author: calle.vander@gmail.com (Carl Vander) * Status: Closed * Priority: Normal * Assignee: * Target version: * ruby -v: 2.4.2p198 * Backport: 2.2: DONTNEED, 2.3: DONTNEED, 2.4: DONE ---------------------------------------- After upgrading a Rails project from 2.3.1 to 2.4.2 I ran into a number of failing tests. Seems like to behaviour of fdiv and conjuction with bigdecimal is wrong. ### Reproduce by running: ```ruby irb(main):001:0> require 'bigdecimal' => true irb(main):002:0> 1.fdiv(1-BigDecimal.new("0")) => 2.1296133346e-314 ``` Ruby version: ruby 2.4.2p198 (2017-09-14 revision 59899) [x86_64-darwin16] ### I would expect the calculation to return 1, which is correctly done if converting the big decimal to a float first: ```ruby irb(main):006:0> 1.fdiv(1-BigDecimal.new("0").to_f) => 1.0 ``` ### Using ruby 2.3.1p112, it also looks OK: ```ruby irb(main):001:0> require 'bigdecimal' => true irb(main):002:0> 1.fdiv(1-BigDecimal.new("0")) => # irb(main):003:0> 1.fdiv(1-BigDecimal.new("0")).to_i => 1 -- https://bugs.ruby-lang.org/ Unsubscribe: