From: oleynikov@... Date: 2018-11-16T18:34:11+00:00 Subject: [ruby-core:89840] [Ruby trunk Bug#15312] Ruby gives me wrong result for plus operation Issue #15312 has been updated by oleynikov (Alexander Oleynikov). This is not a bug, that's how floating point arithmetic works in accordance with the IEEE 754 standard. You can read more about that on Wikipedia or in this article: https://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html To get mathematically correct results you should be using [BigDecimal](https://ruby-doc.org/stdlib-2.5.3/libdoc/bigdecimal/rdoc/BigDecimal.html) or [Rational](https://ruby-doc.org/core-2.5.3/Rational.html). ```ruby require 'bigdecimal' BigDecimal('2.7') + BigDecimal('0.1') #=> 0.28e1 ``` ---------------------------------------- Bug #15312: Ruby gives me wrong result for plus operation https://bugs.ruby-lang.org/issues/15312#change-74899 * Author: kot-begemot (Max Zet) * Status: Open * Priority: Normal * Assignee: * Target version: * ruby -v: * Backport: 2.3: UNKNOWN, 2.4: UNKNOWN, 2.5: UNKNOWN ---------------------------------------- Run into this weird issue today. Tried that on rubies 2.5.1p57 and ruby 2.5.3p105 (i believe this is latest stable at the moment). Here is how to reproduce it $ irb 2.5.3 :001 > 2.6 + 0.1 => 2.7 2.5.3 :002 > 2.7 + 0.1 => 2.8000000000000003 2.5.3 :003 > 2.8 + 0.1 => 2.9 Here some more cases $ irb 2.5.3 :001 > 2.7 + 0.01 => 2.71 2.5.3 :002 > 2.79 + 0.01 => 2.8 2.5.3 :003 > 2.8 - 0.1 => 2.6999999999999997 2.5.3 :004 > 2.79 + 0.01 => 2.8 2.5.3 :005 > 2.81 - 0.01 => 2.8000000000000003 Haven't discovered other cases yet, if will catch them, will post them here -- https://bugs.ruby-lang.org/ Unsubscribe: