Sha256: e1c41066396a882133a2e7ed2c2747e3883151fc5ba5e92098d56eaad9673c0d

Contents?: true

Size: 471 Bytes

Versions: 5

Compression:

Stored size: 471 Bytes

Contents

module Stellar
  # reopen class
  class Price
    MAX_PRECISION = (2**31) - 1

    def self.from_f(number)
      best_r = Util::ContinuedFraction.best_r(number, MAX_PRECISION)
      new({
        n: best_r.numerator,
        d: best_r.denominator
      })
    end

    def invert
      self.class.new(n: d, d: n)
    end

    def to_f
      n / d.to_f
    end

    def to_s
      "#{n} / #{d}"
    end

    def inspect
      "#<Stellar::Price #{self}>"
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
stellar-base-0.23.1 lib/stellar/price.rb
stellar-base-0.23.0 lib/stellar/price.rb
stellar-base-0.23.0.rc2 lib/stellar/price.rb
stellar-base-0.23.0.rc1 lib/stellar/price.rb
stellar-base-0.23.0.pre1 lib/stellar/price.rb