Я бы сделал это:
ary = ["$8,579.06", "$166.37", "$0.226463", "$346.31", "$275.27"]
ary.map { |i| i.delete('$,').to_f }
# => [8579.06, 166.37, 0.226463, 346.31, 275.27]
delete
- это часть волхвов c. Он удаляет любые символы, названные в параметре, из строки.
Запятые в видимом / экранном отображении чисел, обозначающих тысячи, являются человеческим искусством, чтобы нам было легче измерять величину числа. Компьютеры не нуждаются в них.
Присвойте возвращаемое значение из map
переменной или цепочке к ней.
И, в качестве подсказки, учтите, что разные регионы мира используют два разных способа обозначения тысячи и десятичная точка. Некоторые используют 1,000.00
, а некоторые 1.000,00
. Предполагая, что строковое представление валюты имеет запятые для тысяч, а точка для дробной части является источником ошибки, довольно серьезной ошибки, если вы имеете дело с деньгами, особенно если вы делаете финансовые расчеты по кредитам. В вашем примере вы могли бы написать код, чтобы определить, что значения основаны на США из-за $
, но без этого вам будет труднее сказать. Так что, если это то, что вы ожидаете сделать, я настоятельно рекомендую исследовать проблемы и решения.