1 package net.sf.openrocket.util;
3 import java.util.Comparator;
5 public class NumericComparator implements Comparator<Object> {
7 public static final NumericComparator INSTANCE = new NumericComparator();
10 public int compare(Object o1, Object o2) {
11 double v1 = getValue(o1);
12 double v2 = getValue(o2);
14 if (Double.isNaN(v1) || Double.isNaN(v2)) {
15 String s1 = o1.toString();
16 String s2 = o2.toString();
17 return s1.compareTo(s2);
20 return Double.compare(v1, v2);
23 private double getValue(Object o) {
24 if (o instanceof Number) {
25 return ((Number) o).doubleValue();
27 String s = o.toString();
29 return Double.parseDouble(s);
30 } catch (NumberFormatException e) {