public int compare(Object o1, Object o2) { final Number n1 = toNumber(o1); final Number n2 = toNumber(o2); if (n1 == null && n2 == null) { return 0; } if (n1 == null) { return -1; } if (n2 == null) { return 1; } if (n1 instanceof BigInteger && n2 instanceof BigInteger) { return ((BigInteger) n1).compareTo((BigInteger) n2); } if (n1 instanceof BigDecimal && n2 instanceof BigDecimal) { return ((BigDecimal) n1).compareTo((BigDecimal) n2); } if (isIntegerType(n1) && isIntegerType(n2)) { return Long.valueOf(n1.longValue()).compareTo(n2.longValue()); } return Double.valueOf(n1.doubleValue()).compareTo(n2.doubleValue()); }
public int compare(Object o1, Object o2) { final Number n1 = toNumber(o1); final Number n2 = toNumber(o2); if (n1 == null && n2 == null) { return 0; } if (n1 == null) { return -1; } if (n2 == null) { return 1; } if (n1 instanceof BigInteger && n2 instanceof BigInteger) { return ((BigInteger) n1).compareTo((BigInteger) n2); } if (n1 instanceof BigDecimal && n2 instanceof BigDecimal) { return ((BigDecimal) n1).compareTo((BigDecimal) n2); } if (isIntegerType(n1) && isIntegerType(n2)) { return Long.valueOf(n1.longValue()).compareTo(n2.longValue()); } return Double.valueOf(n1.doubleValue()).compareTo(n2.doubleValue()); }