2011-07-21 13 views
11

Myślę, że istnieje metoda w rubinach lub szynach, która to robi, ale nie pamiętam, gdzie ją znaleźć lub jak ją wyszukać, więc miałem nadzieję, że zbiorowa mądrość stackoverflow może Wsparcie. Nie mam nic przeciwko napisaniu metody, aby to zrobić, ale jestem pewien, że ktoś ma lepsze rozwiązanie.Konwersja 1200 do 1.2K w rubinach/szynach

+0

Nie znam żadnej funkcji rubinowe, które uczynią ten rodzaj konwersji. Prawdopodobnie lepiej byłoby napisać własną funkcję, aby zrobić to za Ciebie. Nie zapomnij sprawdzić swoich warunków brzegowych! – ean5533

Odpowiedz

29
number_to_human(1200, :format => '%n%u', :units => { :thousand => 'K' }) 

# 1200 => 1.2K 
5

Jeśli numer bywa 1223 przyjętą wyjście odpowiedź byłaby 1.22K zawierać parametr precision aby zmniejszyć to 1.2K. Ponadto, jeśli liczba ta może być szeroki zakres liczb w milionach i miliardach, a następnie najlepiej zaspokoić te również:

number_to_human(1200, :format => '%n%u', :precision => 2, :units => { :thousand => 'K', :million => 'M', :billion => 'B' }) 
# => "1.2K" 

number_to_human(1223, :format => '%n%u', :precision => 2, :units => { :thousand => 'K', :million => 'M', :billion => 'B' }) 
# => "1.2K" 

number_to_human(1223456789, :format => '%n%u', :precision => 2, :units => { :thousand => 'K', :million => 'M', :billion => 'B' }) 
# => "1.2B"