【问题标题】:How to convert an array of arrays from string to float in Ruby?如何在Ruby中将数组从字符串转换为浮点数?
【发布时间】:2012-03-13 03:10:58
【问题描述】:

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

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

为什么下面会返回一个字符串数组而不是浮点数?

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"]]

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

【问题讨论】:

    标签: ruby-on-rails ruby arrays multidimensional-array


    【解决方案1】:

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

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

    【讨论】:

    • arr.map(&:to_f) 有点短
    猜你喜欢
    • 2019-09-22
    • 2011-11-25
    • 2011-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-28
    • 1970-01-01
    • 2018-02-15
    相关资源
    最近更新 更多