Возможный дубликат:
Сравнение значений двух общих чисел
Я хотел бы сравнить два произвольных экземпляра Number, чтобы узнать, что больше. Как вы знаете, это могут быть целые числа, длинные или парные, а также BigIntegers или BigDecimals. Итак, что делать?
- Число не реализует Comparable.
- Нельзя использовать
doubleValue()
, поскольку может быть потеря точности из BigDecimals или BigIntegers.
Нужно ли мне проходить экзамен по экземплярам и кастинг? Должна быть какая-то библиотека, которая это делает. Но я уже проверял Apache Commons и Guava без везения.
Изменить 1: Комментарии указали на это: Сравнение значений двух общих чисел. Он имеет решение, которое преобразует все в BigDecimal с помощью toString()
. Нет ли лучшего способа сделать это?
Изменить 2: Я только что разместил свою собственную версию в качестве ответа на другой вопрос. Он должен быть более эффективным и надежным, чем принятый ответ.