From: nobu@...
Date: 2016-05-23T13:10:04+00:00
Subject: [ruby-core:75692] [Ruby trunk Bug#12414] FloatDomainError in infinite Range#inclyde? for certain BigDecimals

Issue #12414 has been updated by Nobuyoshi Nakada.

Description updated
Backport changed from 2.1: UNKNOWN, 2.2: UNKNOWN, 2.3: UNKNOWN to 2.1: REQUIRED, 2.2: REQUIRED, 2.3: REQUIRED

----------------------------------------
Bug #12414: FloatDomainError in infinite Range#inclyde? for certain BigDecimals
https://bugs.ruby-lang.org/issues/12414#change-58824

* Author: A Nonymous
* Status: Closed
* Priority: Normal
* Assignee: 
* ruby -v: ruby 2.2.3p173 (2015-08-18 revision 51636) [x86_64-darwin14]
* Backport: 2.1: REQUIRED, 2.2: REQUIRED, 2.3: REQUIRED
----------------------------------------
# What I did
~~~ruby
require 'bigdecimal'

r = 0.04...(Float::INFINITY)
n = BigDecimal.new('0.13E0')
r.include?(n.to_f)
r.include?(n)
~~~

# What I expected
~~~
true
true
~~~

# What happens instead
~~~
true
FloatDomainError: Infinity
	from (irb):19:in `to_r'
	from (irb):19:in `<=>'
	from (irb):19:in `include?'
	from (irb):19
	from /Users/msiegel/.rvm/rubies/ruby-2.2.3/bin/irb:15:in `<main>'
~~~

# Workaround
To workaround, I am calling `#to_f` on the `BigDecimal` before submitting it to the `Range#include?`

Note that this exception only occurs for certain BigDecimal values, not for all.



-- 
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>