Вы можете изменить внутреннее тело l oop на это:
String si = s[i], sj = s[j];
if (new BigDecimal(si).compareTo(new BigDecimal(sj)) < 0) {
s[i] = sj;
s[j] = si;
}
Вам не нужно сохранять результат преобразованных больших десятичных дробей обратно в массив, но используйте их только для сравнения.
На ввод:
9, -100, 50, 0, 56.6, 90, 0.12, .12, 02.34, 000.000
Возвращаюсь:
90, 56.6, 50, 9, 02.34, .12, 0.12, 0, 000.000, -100
А если не t работать с очень большими числами, нормальных double
должно хватить:
if(Double.parseDouble(si) < Double.parseDouble(sj))