2016-06-29 9 views
0

Gibt es eine einfache Rails/Ruby-Hilfsfunktion, die Ihnen hilft, lesbare Zahlen in echte Zahlen umzuwandeln?Wie konvertiert man die lesbare Zahl in Ruby in die tatsächliche Zahl?

wie:

1K => 1000 

2M => 2,000,000 

2.2K => 2200 

1,500 => 1500 

50 => 50 

5.5M => 5500000 
+0

Wie wäre es, es selbst zu konvertieren? 'K = 10^3',' M = 10^6' und so weiter. Wenn kein Suffix vorhanden ist, geben Sie einfach die Nummer ein, ansonsten multiplizieren Sie sie mit dem entsprechenden Wert und drucken Sie sie aus. – Shravan40

+1

'2.000.000' ist kein gültiger Rubin' Numeric'. – mudasobwa

Antwort

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

so etwas wie dies versuchen, wenn Sie eine Reihe von Menschen lesbaren Zahlen als

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 

Werfen Sie einen Blick auch hier finden Sie viele Zahlen Helfer

finden

NumberHelper Rails.

Ruby Array human readable to actual

+0

'elem = elem.gsub ('$', '')' :: Ja, es gibt keine Währungen auf der Welt außer USD. – mudasobwa

Verwandte Themen