From: muraken@... Date: 2017-12-23T23:20:14+00:00 Subject: [ruby-core:84422] [Ruby trunk Bug#13754] bigdecimal with lower precision that Float Issue #13754 has been updated by mrkn (Kenta Murata). Target version set to next minor https://github.com/ruby/bigdecimal/issues/94 ---------------------------------------- Bug #13754: bigdecimal with lower precision that Float https://bugs.ruby-lang.org/issues/13754#change-68618 * Author: lionel_perrin (Lionel PERRIN) * Status: Assigned * Priority: Normal * Assignee: mrkn (Kenta Murata) * Target version: next minor * ruby -v: ruby 2.4.1p111 (2017-03-22 revision 58053) [x64-mingw32] * Backport: 2.2: UNKNOWN, 2.3: UNKNOWN, 2.4: UNKNOWN ---------------------------------------- Hello, I'm not sure if I've misunderstood the bigdecimal class but in the following example, I only get 12 significant digits using bigdecimal while using Float, I get a correct value with 17 significant digits. ~~~ ruby # using floats 101/0.9163472602589686 # 110.22022368622177 (OK: floating point computation) # using bigdecimal a = BigDecimal('101'); a.precs # [9, 18] b = BigDecimal('0.9163472602589686'); b.precs # [18, 27] c = a/b; c.precs # [18, 36] (OK: I understand that c is computed with 18 significant digits) c.to_s # "0.110220223686e3" (Mmm: I see only 12 significant digits) c - BigDecimal('0.110220223686e3') # 0.0 (Looks like c only stores 12 significant digits and not 18) ~~~ Using the Rational class, I've seen that the value I'm expecting is about: ~~~ ruby BigDecimal.new(Rational(101/Rational('0.9163472602589686')), 25) # 0.1102202236862217746799312e3 ~~~ -- https://bugs.ruby-lang.org/ Unsubscribe: