48386


初歩的な質問で申し訳ないですがお願いします。

[code]

    {"key1"=>"3.5", "key2"=>"4.1", "key3"=>"2.9", "key4"=>"3.2", "key5"=>"2.6"}
    
[/code]

というハッシュがあった場合に右辺の数値の合計を計算したいのですが上手くいきません。  
どうしたら計算できるのでしょうか。


CC BY-SA 4.0
2018-09-14T06:01:01.300
48385
2018-11-09T16:36:49.427
2018-09-14T06:34:07.810
754
29121
question
ruby
ハッシュの値を合計したい


`Enumerable#sum` が利用できます。 <https://docs.ruby-
lang.org/ja/latest/method/Enumerable/i/sum.html>

[code]

    h = {"key1"=>"3.5", "key2"=>"4.1", "key3"=>"2.9", "key4"=>"3.2", "key5"=>"2.6"}
    h.values.map(&:to_f).sum
    # => 16.3
    
[/code]


CC BY-SA 4.0
2018-09-14T06:07:30.477
48386
2018-09-14T06:07:30.477
754
48385
answer


Yuki Inoue さんの回答で既に解決したようで良かったですが、

たぶん、質問者さんがうまくいかなかったのは、値が文字列だからではないでしょうか?

なので、Yuki Inoue さんの回答では、これを数値に変換するために `.map(&:to_f)` が  
入っています。

数値になってしまえば、あとは合計するだけなので、問題なくできると思います。

以下のコードと実行結果を見て、どのメソッドを呼んで何が返ってきて、  
それにどのメソッドを呼んで何が返ってきているか、  
理解を深めると良いでしょう。

コード:

[code]

    #!/usr/bin/env ruby
    
    h = {"key1"=>"3.5", "key2"=>"4.1", "key3"=>"2.9", "key4"=>"3.2", "key5"=>"2.6"}
    
    p h
    p h.values
    p h.values.map(&:to_f)
    p h.values.map(&:to_f).sum
    
[/code]

実行結果:

[code]

    luna:~ % ruby test.rb
    {"key1"=>"3.5", "key2"=>"4.1", "key3"=>"2.9", "key4"=>"3.2", "key5"=>"2.6"}
    ["3.5", "4.1", "2.9", "3.2", "2.6"]
    [3.5, 4.1, 2.9, 3.2, 2.6]
    16.3
    luna:~ % 
    
[/code]


CC BY-SA 4.0
2018-09-14T15:58:42.993
48406
2018-09-14T15:58:42.993
5288
48385
answer

[code]

    h = {"key1"=>"3.5", "key2"=>"4.1", "key3"=>"2.9", "key4"=>"3.2", "key5"=>"2.6"}
    h.values.reduce(0) {|sum, i| sum + i.to_f }
    
[/code]


CC BY-SA 4.0
2018-11-09T16:36:49.427
50140
2018-11-09T16:36:49.427
30913
48385
answer