Issue #6120 has been updated by mame (Yusuke Endoh). Target version changed from 2.0.0 to next minor Should it be assigned to mrkn? -- Yusuke Endoh <mame / tsg.ne.jp> ---------------------------------------- Bug #6120: Float and BigDecimal bug in remainder in corner cases https://bugs.ruby-lang.org/issues/6120#change-36511 Author: marcandre (Marc-Andre Lafortune) Status: Assigned Priority: Normal Assignee: marcandre (Marc-Andre Lafortune) Category: core Target version: next minor ruby -v: r34927 Currently: 4.2.remainder(+Float::INFINITY) # => 4.2, ok 4.2.remainder(-Float::INFINITY) # => NaN, should be 4.2 # (same with all signs reversed) Reasons the remainder should be 4.2 and not NaN: 1) foo.remainder(bar) == foo.remainder(-bar) 2) foo.remainder(bar) == foo when bar.abs > foo.abs Similarly: require 'bigdecimal' bd = BigDecimal.new("4.2") bd.remainder(BigDecimal.new("+Infinity")) # => NaN, should be bd bd.remainder(BigDecimal.new("-Infinity")) # => NaN, should be bd # (same with all signs reverse) Reasons: same as float. Finally: bd = BigDecimal.new("4.2") bd.modulo(BigDecimal.new("0")) # => ZeroDivisionError, probably ok? bd.remainder(BigDecimal.new("0")) # => NaN, should be probably raise a ZeroDivisionError? Like in #6044, this could be decided either way, as long as there is consistency. Anyone prefer NaN to raising a ZeroDivisionError? -- http://bugs.ruby-lang.org/