Issue #13078 has been updated by _ wanabe.
The accuracy of `Rational(a, b).to_f` seems to be due to reduction of fraction.
How about using Reational object, or its internal function `f_gcd()` and `f_idiv()`?
----------------------------------------
Bug #13078: with Integer a and b, a.fdiv(b) sometimes inaccurate than Rational(a, b).to_f
https://bugs.ruby-lang.org/issues/13078#change-62296
* Author: Makoto Kishimoto
* Status: Open
* Priority: Normal
* Assignee:
* Target version:
* ruby -v:
* Backport: 2.2: UNKNOWN, 2.3: UNKNOWN, 2.4: UNKNOWN
----------------------------------------
For example,
~~~
a = 3
b = 0x20_0000_0000_0001
p a.fdiv(b)
p Rational(a, b).to_f
#=>
3.3306690738754696e-16
3.330669073875469e-16
~~~
I'm hacking to solve this problem, see diff view.
https://github.com/ruby/ruby/compare/trunk...metanest:fdiv_spike
--
https://bugs.ruby-lang.org/
Unsubscribe: <mailto:ruby-core-request / ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>