推动理性数字

时间:2014-10-21 14:23:19

标签: ruby numbers rational-numbers

我必须创建类NumberSet,它是不同类型数字的容器,只能包含尚未包含的数字。

class NumberSet
  include Enumerable

  def initialize
    @arr=[]
  end
  def each (&block)
    @arr.each do |member|
      block.call (member)
    end
  end
  def << number
    @arr<<number if @arr.include?(number) == false
  end
end

此代码截断了Rational数字。例如,(22/7)不应该等于(3/1)

mine=NumberSet.new
mine<<Rational(22/7)
# => [(3/1)]
mine<<3.0
# => nil

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:4)

您对Rational的使用是错误的。应该是

mine << Rational(22, 7)

答案 1 :(得分:1)

使用最新的Ruby,你应该这样做:

mine << 22/7r