Class: Rational

Inherits:
Numeric
  • Object
show all
Defined in:
lib/bigdecimal/util.rb

Instance Method Summary collapse

Instance Method Details

#to_d(precision = 0) ⇒ Object

call-seq:

r.to_d(sig)   -> bigdecimal

Converts a Rational to a BigDecimal. Takes an optional parameter sig to limit the amount of significant digits. If a negative precision is given, raise ArgumentError. The zero precision and implicit precision is deprecated.

r = (22/7.0).to_r
# => (7077085128725065/2251799813685248)
r.to_d
# => #<BigDecimal:1a52bd8,'0.3142857142 8571427937 0154144999 105E1',45(63)>
r.to_d(3)
# => #<BigDecimal:1a44d08,'0.314E1',18(36)>


99
100
101
102
103
104
105
106
107
108
# File 'lib/bigdecimal/util.rb', line 99

def to_d(precision=0)
  if precision < 0
    raise ArgumentError, "negative precision"
  elsif precision == 0
    warn "zero and implicit precision is deprecated."
    precision = BigDecimal.double_fig*2+1
  end
  num = self.numerator
  BigDecimal(num).div(self.denominator, precision)
end