Алгоритм вычисления процетиля и медианы. Как проверить корректность?
Решаю следующую задачу по расчету процентиля и медианы:
Данные для расчетов считываются из файла, путь к которому подается в виде аргумента. Числа в файле целые в пределах
от -32 768 до 32 767.В файле не более 1000 строк. Вывод - значения с точностью до сотых.
Проблема в том, что когда на вход подаю 5 8 0 0 1 5 5 5 10 6 на выходе должен получить 8.20
и 5.00, а получаю 8.10 и 5.00
В чем моя ошибка и как улучшить сам алгоритм?
public class Test1 {
public static void main(String[] args) throws FileNotFoundException {
File file = new File(args[0]); // принимаем файл
Scanner b = new Scanner(file);
List<Short> arr = new ArrayList();
while (b.hasNext()) {
arr.add(b.nextShort());
}
Collections.sort(arr);
int size = arr.size() - 1;
double percentile = 0.9;
double mid = (0.5*arr.size());
DecimalFormat format = new DecimalFormat("#.00");
System.out.println (format.format((double) size * percentile));
System.out.println(format.format(mid));