-
-
Notifications
You must be signed in to change notification settings - Fork 942
Closed
Description
BigDecimal.new('100') * Rational(1, 100)
currently returns 0. It should be returning 1.
irb(main):001:0> require 'rational'
=> true
irb(main):002:0> require 'bigdecimal'
=> true
irb(main):003:0> BigDecimal.new('100') * Rational(1, 100)
=> #<BigDecimal:504f4029,'0.0',1(4)>
irb(main):004:0> JRUBY_VERSION
=> "1.7.12"
irb(main):005:0> RUBY_VERSION
=> "1.9.3"
>jruby -v
jruby 1.7.12 (1.9.3p392) 2014-04-15 643e292 on Java HotSpot(TM) 64-Bit Server VM 1.7.0_51-b13 [Windows 7-amd64]
It appears to be rounding the rational number before multiplying:
irb(main):011:0> BigDecimal.new('100') * Rational(50, 100)
=> #<BigDecimal:144cf50,'0.1E3',1(4)>
irb(main):012:0> BigDecimal.new('100') * Rational(49, 100)
=> #<BigDecimal:1fec595,'0.0',1(4)>
The same operation works correctly in cruby:
d:\development\rubydev\tickets>irb
irb(main):001:0> require 'rational'
=> true
irb(main):002:0> require 'bigdecimal'
=> true
irb(main):003:0> BigDecimal.new('100') * Rational(1, 100)
=> #<BigDecimal:2a2aae0,'0.1E1',9(36)>
irb(main):004:0> RUBY_VERSION
=> "1.9.3"
irb(main):005:0> exit
ruby -v
ruby 1.9.3p484 (2013-11-22) [i386-mingw32]
Reactions are currently unavailable