希望使用以这些格式存储金额的字符串数据集。例如:
$ 217.3M
$ 16亿
$ 34M
€1M
€2.8B
我查看了money宝石,但看起来它不像处理“M,B,k”的数字。寻找能做到这一点的宝石,以便我可以转换汇率并比较数量。我需要与number_to_human方法相反的方法。
答案 0 :(得分:2)
我会从这样的事情开始:
MULTIPLIERS = { 'k' => 10**3, 'm' => 10**6, 'b' => 10**9 }
def human_to_number(human)
number = human[/(\d+\.?)+/].to_f
factor = human[/\w$/].try(:downcase)
number * MULTIPLIERS.fetch(factor, 1)
end
human_to_number('$217.3M') #=> 217300000.0
human_to_number('$1.6B') #=> 1600000000.0
human_to_number('$34M') #=> 34000000.0
human_to_number('€1M') #=> 1000000.0
human_to_number('€2.8B') #=> 2800000000.0
human_to_number('1000') #=> 1000.0
human_to_number('10.88') #=> 10.88
答案 1 :(得分:0)
如果其他人想要这个,我决定不要懒惰并且实际上写自己的功能:
def text_to_money(text)
returnarray = []
if (text.count('k') >= 1 || text.count('K') >= 1)
multiplier = 1000
elsif (text.count('M') >= 1 || text.count('m') >= 1)
multiplier = 1000000
elsif (text.count('B') >= 1 || text.count('b') >= 1)
multiplier = 1000000000
else
multiplier = 1
end
num = text.to_s.gsub(/[$,]/,'').to_f
total = num * multiplier
returnarray << [text[0], total]
return returnarray
end
感谢您的帮助!