gpt4 book ai didi

Ruby - 计算数组的每个元素之间的返回

转载 作者:太空宇宙 更新时间:2023-11-03 17:59:47 24 4
gpt4 key购买 nike

我必须计算数组的每个元素之间的返回

请查看示例:

nav = ["100.00", "86.21", "84.65", "82.46", "86.94"]

这是我使用的循环:

0.upto(nav.count - 2) do |i|
perf = (nav[i + 1].to_f / nav[i].to_f - 1) * 100
p perf
end

它有效,但我的观点是关于数组的最后一个元素。

首先我想使用类似的东西:

nav.length.times do 
...
end

然后,我用了:

0.upto(nav.count - 2) 

为了避免计算 (last value + 1) 为 nil。

但是,我很高兴知道是否有更好的方法。

感谢您的建议。

最佳答案

nav.map(&:to_f).each_cons(2){|a,b| p (b/a-1)*100}
#=> -13.790000000000003
#=> -1.809534856745143
#=> -2.587123449497941
#=> 5.432937181663844
#=> => nil

如果您需要返回一个值数组:

nav.map(&:to_f).each_cons(2).inject([]){|ar,(a,b)| ar << (b/a-1)*100}
#=> [-13.790000000000003, -1.809534856745143, -2.587123449497941, 5.432937181663844]

On the second example: this inject construction is better known as "map" ;-) – @tokland

nav.map(&:to_f).each_cons(2).map{|a,b| (b/a-1)*100}

关于Ruby - 计算数组的每个元素之间的返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7059474/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com