首页 > 解决方案 > rails计算两个哈希之间的百分比

问题描述

我有两个哈希看起来

A = {2019.01 => 100, 2019.02 => 100, 2019.03 => 100, 2019.04 => 100} 

B = {2019.01 => 20, 2019.02 => 30, 2019.03 => 50, 2019.04 => 40} 

我需要结果

C = {2019.01 => 20%, 2019.02 => 30%, 2019.03 => 50%, 2019.04 => 40%}

标签: ruby-on-railsrubyloopshash

解决方案


给定您的数据作为变量:

a = {2019.01 => 100, 2019.02 => 100, 2019.03 => 100, 2019.04 => 100} 
b = {2019.01 => 20, 2019.02 => 30, 2019.03 => 50, 2019.04 => 40}

如果您只需要百分比b,您可以转换值

b.transform_values{ |v| v.fdiv(100) }
#=> {2019.01=>0.2, 2019.02=>0.3, 2019.03=>0.5, 2019.04=>0.4}

如果您需要除以 的值a,您可以合并

a.merge(b) { |k, o_v, n_v| n_v.fdiv(o_v) }
{2019.01=>0.2, 2019.02=>0.3, 2019.03=>0.5, 2019.04=>0.4}

当需要字符串百分比时,可以使用字符串插值:

n = 0.2
"#{n*100}%"
#=> "20.0%"

注意:您使用浮点数作为看起来像日期的哈希键。


推荐阅读