2015-09-16 3 views
0

Я пишу блок кода, который должен поддерживать как строки, так и числа, потому что Number может быть в представлении String (если строка преобразуется в число и затем сравнивается) при вводе чисел (AtomicInteger, AtomicLong, BigDecimal, BigInteger, Byte, Double , Float, Integer, Long, Rational, Short и т. Д.).Как сравнить два `Number`s в Java?

Как я могу сравнить? случай 1: вход - целое число, ниже - Десятичный, верхняя - BigInteger

Случай 2: вход - с плавающей точкой, ниже - целое число, верхняя - Длинный

public boolean isNumberRange(final Object input, final Object lower, final Object upper){ 
    boolean result = false; 
    final Number nInput = getNumber(input); 
    final Number nLower = getNumber(lower); 
    final Number nUpper = getNumber(upper); 

    if(nInput != null && nLower != null && nUpper != null) 
    { 
      Double dInput = nInput.doubleValue(); 
      Double dLower = nLower.doubleValue(); 
      Double dUpper = nUpper.doubleValue(); 
      if(dLower <= dInput && dInput <= dUpper && dInput >= dLower){ 
       result = true; 
      } 
    } 
    return result; 
} 

private Number getNumber(Object object) throws NumberFormatException{ 
    if(object instanceof String){ 
     final String sObject = object.toString(); 
     if(NumberUtils.isNumber(sObject)) { 
      return NumberUtils.createNumber(sObject); 
     } 
    } 
    if(object instanceof Number){ 
     return (Number) object; 

    } 
    else{ 
     return null; 
    } 
} 

Здесь, в приведенном выше примере я am преобразование числа в Double и сравнение. Правильно ли это? Это адрес BigInteger и AtomicLong и т. Д., Пожалуйста, дайте мне знать. Спасибо

+0

Что случилось с вашим текущим методом? –

+0

посетите http://stackoverflow.com/questions/3214448/comparing-numbers-in-java?lq=1 –

+0

@RakshithRavi Что не так, что он не компилируется. – EJP

ответ

0

Здесь, в приведенном выше примере, я конвертирую номер в Double и сравнивая. Правильно ли это?

№. Преобразуйте его в double.

Это адрес BigInteger и AtomicLong и т. Д., Пожалуйста, дайте мне знать.

Сообщите свое мнение?

Смежные вопросы