Czy istnieje zgrabna metoda zamiany liczby „1112” na liczbę całkowitą 1112 zamiast 1?
Mam jeden, ale nie schludny:
"1,112".split(',').join.to_i #=> 1112
Czy istnieje zgrabna metoda zamiany liczby „1112” na liczbę całkowitą 1112 zamiast 1?
Mam jeden, ale nie schludny:
"1,112".split(',').join.to_i #=> 1112
Co powiesz na to?
"1,112".delete(',').to_i
Możesz także chcieć upewnić się, że kod jest poprawnie zlokalizowany lub upewnić się, że użytkownicy są przyzwyczajeni do notacji „międzynarodowej”. Na przykład „1112” oznacza w rzeczywistości różne liczby w różnych krajach. W Niemczech oznacza to liczbę nieco powyżej jednego zamiast tysiąca i coś więcej.
Odpowiedni artykuł Wikipedii znajduje się pod adresem http://en.wikipedia.org/wiki/Decimal_mark . Wydaje się jednak, że w tej chwili jest źle napisany. Np. Jako Chińczyk nie jestem pewien, skąd się bierze opis o separatorze tysiąca w Chinach.
źródło
Niektóre wygodniejsze
sprawia, że "1 200 200" również działa poprawnie
źródło
'1,1200.00'.gsub(/[^0-9\.]/,'').to_f
."1,1200.00"
na"1120000"
? Czy nie chcesz po prostu zamienić,
(lub, w zależności od lokalizacji,.
)? Ponadto nie konwertuje to na liczbę całkowitą lub zmiennoprzecinkową, tylko ciąg bez ograniczników.Poniżej znajduje się kolejna metoda, która będzie działać, chociaż podobnie jak w przypadku niektórych innych metod usuwa miejsca dziesiętne.
źródło
Zrobiłbym używając
String#tr
:źródło
Jeśli ktoś szuka więcej niż przecinka, jestem fanem:
nie wiem o wydajności, ale jest bardziej elastyczny niż a
gsub
, tj .:źródło
źródło