[#89806] [Ruby trunk Bug#15306] Generate prelude.c using miniruby — v.ondruch@...
Issue #15306 has been reported by vo.x (Vit Ondruch).
3 messages
2018/11/15
[ruby-core:89840] [Ruby trunk Bug#15312] Ruby gives me wrong result for plus operation
From:
oleynikov@...
Date:
2018-11-16 18:34:11 UTC
List:
ruby-core #89840
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: <mailto:ruby-core-request@ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>