ruby-on-rails - 如何在 Ruby 中将数组的数组从字符串转换为 float ?

以下代码将字符串数组转换为 float 数组:

a = ["4", "5.5", "6"]
a.collect do |value| 
  value.to_f 
end
=> [4.0, 5.5, 6.0]

为什么下面返回的是字符串数组而不是 float ?

b =  [ ["0.0034", "-0.0244", "0.0213", "-0.099"], 
       ["0.0947", "-0.1231", "-0.1363", "0.0501"], 
       ["-0.0368", "-0.1769", "-0.0327", "-0.113"], 
       ["0.0936", "-0.0987", "-0.0971", "0.1156"], 
       ["0.0029", "-0.1109", "-0.1226", "-0.0133"] ]

b.each do |row| 
    row.collect do |value|
        value.to_f
    end
end
=> [["0.0034", "-0.0244", "0.0213", "-0.099"], ["0.0947", "-0.1231", "-0.1363", "0.0501"], ["-0.0368", "-0.1769", "-0.0327", "-0.113"], ["0.0936", "-0.0987", "-0.0971", "0.1156"], ["0.0029", "-0.1109", "-0.1226", "-0.0133"]]

此外,有没有更好的方法来做到这一点?

最佳答案

因为您是在 b 上调用 each 而不是 collect,所以您最终会返回原始数组而不是新创建的数组。这是正确的代码(我更喜欢收集 map ,但那只是我):

b.map{ |arr| arr.map{ |v| v.to_f } }

https://stackoverflow.com/questions/9677868/

相关文章:

macos - 在 Mac OS X 中使用命令行杀死 "loginwindow"进程

assembly - 为什么我们必须清理堆栈

php - 你如何使 preg_replace 捕获大写 (php)?

cuda - GPU Gems 3 的并行前缀算法中使用的 CONFLICT_FREE_OFFSET

math - alpha 混合如何在数学上逐个像素地工作?

objective-c - 如何将 32 位 PNG 转换为 RGB565?

django - 来自模型的初始表单数据 - Django

r - 在 R 中,如何在运行具有大量变量的多元回归后仅提取重要变量

jsf - 命令按钮操作不起作用

c++builder - 如何使用 C++ Builder 打开带有按钮的新表单?