首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Ruby中将哈希值从十进制转换为百分比

在Ruby中将哈希值从十进制转换为百分比
EN

Stack Overflow用户
提问于 2013-10-20 22:34:46
回答 4查看 1.9K关注 0票数 2

我使用以下哈希在PDF中创建一个表:

代码语言:javascript
复制
percentages = {
"group one" => 0.2,
"group two" => 0.6666666666666666,
"group three" => 0.2,
"group four" => 0.03333333333333333,
"group five" => 0.03333333333333333,
"group six" => 0.06666666666666667
}

我正在对散列键和值调用.transpose

[percentages.keys, percentages.values].transpose

这和预期的一样,但是我现在需要把小数转换成百分数。而不是.2,我需要显示20%。而不是0.06666666666666667,我需要显示7%。

有没有一种干净的方法可以做到这一点,而不改变原来的哈希/创建一个新的?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-10-20 22:41:06

你可以试试

代码语言:javascript
复制
[percentages.keys, percentages.values.map {|x| (x * 100).round.to_s + '%'}].transpose

它只需取每个值并乘以100 (转换为百分比),调用round (删除小数点,即6.666667 -> 7),然后调用to_s将其转换为字符串并连接到'%'

票数 4
EN

Stack Overflow用户

发布于 2013-10-20 23:10:46

代码语言:javascript
复制
percentages.map{|k, v| [k, "#{(v * 100).round}%"]}
票数 3
EN

Stack Overflow用户

发布于 2013-10-20 23:11:26

另一种方法是使用zip而不是transpose:

代码语言:javascript
复制
percentages.keys.zip percentages.values.map {|v| "#{(100*v).round.to_s}%"}
  #  => [["group one", "20%"], ["group two", "67%"], ["group three", "20%"],
  #      ["group four", "3%"], ["group five", "3%"], ["group six", "7%"]] 
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19483674

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档