爲什麼試圖尋找一個股票的平均體積時,下面的方法返回無窮大:無限返回
class Statistics
def self.averageVolume(stocks)
values = Array.new
stocks.each do |stock|
values.push(stock.volume)
end
values.reduce(:+).to_f/values.size
end
end
class Stock
attr_reader :date, :open, :high, :low, :close, :adjusted_close, :volume
def initialize(date, open, high, low, close, adjusted_close, volume)
@date = date
@open = open
@high = high
@low = low
@close = close
@adjusted_close = adjusted_close
@volume = volume
end
def close
@close
end
def volume
@volume
end
end
CSV.foreach(fileName) do |stock|
entry = Stock.new(stock[0], stock[1], stock[2], stock[3], stock[4], stock[5], stock[6])
stocks.push(entry)
end
這裏是如何被調用的方法:
Statistics.averageVolume(stocks)
使用具有251行的文件輸出到控制檯:
stock.rb:32: warning: Float 23624900242507002003... out of range
Infinity
警告在以下行中調用: values.reduce(:+).to_f/values.size
請提供[mcve],讓我們確切知道警告正在發生什麼行。 –
警告發生在以下行''values.reduce(:+).to_f/values.size'''上。 – forgetaboutme
在第7行的'end'後面加一個斷點,看看'values'的外觀。 – henrebotha