2016-06-29 20 views
0

是否有一個簡單的Rails/Ruby幫助函數來幫助您將可讀的數字轉換爲實際的數字?如何將人類可讀數字轉換爲Ruby中的實際數字?

如:

1K => 1000 

2M => 2,000,000 

2.2K => 2200 

1,500 => 1500 

50 => 50 

5.5M => 5500000 
+0

如何自行轉換它? 'K = 10^3','M = 10^6'等等。如果沒有後綴,只需打印數字,再乘以相同的值並打印出來。 – Shravan40

+1

'2,000,000'不是有效的紅寶石'數字'。 – mudasobwa

回答

4
test = { 
    '1K' => 1000, 
    '2M' => 2000000, 
    '2.2K' => 2200, 
    '1,500' => 1500, 
    '50' => 50, 
    '5.5M' => 5500000 
} 

class String 
    def human_readable_to_i 
    multiplier = {'K' => 1_000, 'M' => 1_000_000}[self.upcase[/[KM](?=\z)/]] || 1 
    value = self.gsub(/[^\d.]/, '') 
    case value.count('.') 
    when 0 then value.to_i 
    when 1 then value.to_f 
    else 0 
    end * multiplier 
    end 
end 

test.each { |k, v| raise "Test failed" unless k.human_readable_to_i == v } 
0

嘗試是這樣的,如果你有人類可讀的數字比

array.map do |elem| 
    elem = elem.gsub('$','') 
    if elem.include? 'B' 
     elem.to_f * 1000000000 
    elsif elem.include? 'M' 
     elem.to_f * 1000000 
    elsif elem.include? 'K' 
     elem.to_f * 1000 
    else 
     elem.to_f 
    end 
end 

數組看看這裏還有,你會發現很多數字助手

NumberHelper Rails.

Ruby Array human readable to actual

+0

'elem = elem.gsub('$','')'是的,世界上除了美元之外沒有貨幣。 – mudasobwa

相關問題