Сортировать не целые числа в массиве - PullRequest
0 голосов
/ 12 июня 2019

Итак, это массив:

["2,0", "2,5", "3,2", "1,4", "1,8", "1,1", "2,7", "3,7", "0,8", "0,9",
 "30,0", "0,5", "2,6", "3,0", "5,3", "9,0", "0,7", "12,8", "16,2", "19,2", "23,0", 
 "4,4", "6,4", "7,0", "7,7", "0,4", "1,2", "1,6", "11,1", "13,6", "16,9", "20,5", 
 "32,0", "5,4", "8,5", "0,36", "0,48", "0,55", "0,56", "0,66", "0,75", "0,76", 
 "0,95", "1,15", "1,65", "1,7", "2,1", "24,5", "3,5", "4,1", "4,8", "5,8", "2,2", 
 "46,0", "7,5", "0,6", "10,6", "11,4", "3,3", "3,8", "4,7", "40,6", "5,1", "5,5", 
 "5,9", "6,0", "6,7", "8,1", "9,2", "9,4"]

Мне нужно отсортировать по возрастанию, например:

["0,36", "0.48", "0,5"..."1.7"..."40.6"] 

Я пытался использовать .sort_by(&:to_i) и получил:

["0,8", "0,9", "0,5", "0,7", "0,4", "0,36", "0,48", "0,55", "0,56", "0,66", "0,75", 
 "0,76", "0,95", "0,6", "1,4", "1,8", "1,1", "1,2", "1,6", "1,15", "1,65", "1,7", 
 "2,0", "2,5", "2,7", "2,6", "2,1", "2,2", "3,2", "3,7", "3,0", "3,5", "3,3", "3,8", 
 "4,4", "4,1", "4,8", "4,7", "5,3", "5,4", "5,8", "5,1", "5,5", "5,9", "6,4", "6,0", 
 "6,7", "7,0", "7,7", "7,5", "8,5", "8,1", "9,0", "9,2", "9,4", "10,6", "11,1", 
 "11,4", "12,8", "13,6", "16,2", "16,9", "19,2", "20,5", "23,0", "24,5", "30,0", 
 "32,0", "40,6", "46,0"]

Выглядит лучше, но все же, некоторые цифры появляются случайно.

1 Ответ

7 голосов
/ 12 июня 2019

Полагаю, вы хотите отсортировать по значению с плавающей точкойЧтобы сделать это, сначала замените запятую точкой и приведите к float:

numbers.sort_by { |s| s.tr(',', '.').to_f }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...