【问题标题】:Slice an array with round up in Ruby在 Ruby 中使用 round up 对数组进行切片
【发布时间】:2014-10-13 13:48:51
【问题描述】:

谁能帮我把这个“伪代码”转换成 Ruby?

max = round_up(count(physical_values))
for i=0;i < max/100; i++
  part = physical_values[i*100..i*100+100]
  send_part_to_server(part)
end

这是一个类似这样的浮点数组:

11.05016861219201 10.350157930876776 10.550160982681064 11.550176241702957 12.55019150072485 12.750194552529138 11.850180819409616 10.350157930876776 9.15013962005014 9.15013962005014 10.450159456778692 12.15018539711582 13.250202182040084 12.95019760433388 11.750179293507244 10.65016250858298 10.850165560387723

【问题讨论】:

  • 能否提供physical_values的样本数据?
  • 你能解释一下这段代码应该做什么吗?
  • 这是一个包含 5000 条数据记录的数组,我需要将此数组拆分为每个“块”的 100 个元素并发送到服务器。
  • 以后,请在您描述您的意图的地方提出问题,并提供示例输入和输出。欢迎使用 Ruby 和 Stack Overflow! :)
  • 对不起!我也是 Stack Overflow 的初学者 :)

标签: ruby arrays slice


【解决方案1】:

您希望 ceil 进行四舍五入,并希望 each_slice 得到碎片。

# Slices of 100 elements each
physical_values.each_slice(100){ |part| send_part_to_server( part ) }

# <=100 slices
slice_size = (physical_values.length.to_f/100).ceil
physical_values.each_slice(slice_size){ |part| send_part_to_server( part ) }

请注意,我使用to_f 将长度转换为浮点数,因为一个整数除以另一个整数的结果始终是一个整数(向下舍入)。或者我可以这样做:

(physical_values.length/100.0).ceil # Use a floating point 100.0 for float result

【讨论】:

  • 非常感谢您的帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-04-03
  • 2015-09-05
  • 1970-01-01
  • 2020-01-23
  • 1970-01-01
  • 2010-11-23
  • 2015-10-15
相关资源
最近更新 更多