gpt4 book ai didi

ruby - 有人可以澄清为什么我的循环中的变量值在循环关闭之前不会更新吗?

转载 作者:数据小太阳 更新时间:2023-10-29 08:33:49 24 4
gpt4 key购买 nike

这是我的功能

def rating(array)
sum_count = array.values.inject(0) { |sum_count,value| sum_count + value }
run_count = 0
array.each do |tag,count|
run_count += count
cum_distn = run_count/sum_count
logger.debug "cum_distn is #{cum_distn.to_f}; run_count is #{run_count.to_f}; sum_count is #{sum_count}"
if cum_distn < 0.25
...
elsif cum_distn < 0.5
...
else
...
end
end
end

对于数组中的 2 个对象,每个对象的计数为 1,我的记录器显示如下:

cum_distn is 0.0; run_count is 1.0; sum_count is 2
cum_distn is 1.0; run_count is 2.0; sum_count is 2

cum_distn 的值似乎只在一个循环完成后才更新,而我打算让它在 if 函数打开之前立即更新。我有两个问题:

(a) 为什么会这样(因为我看不出任何合乎逻辑的解释)?

(b) 我怎样才能纠正这个问题来做我想做的事?

最佳答案

您正在使用整数除法,因此 run_count/sum_count 的结果被截断了。要修复,只需在计算 cum_distn 之前将其中之一转换为 Float。例如:

cum_distn = run_count.to_f / sum_count

关于ruby - 有人可以澄清为什么我的循环中的变量值在循环关闭之前不会更新吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8606267/

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