Я ищу надежный способ проверить, если два примитивная обертка Numbers
(например Integer
, Float
, Double
и т.д.) представляют собой одинаковые примитивные числа.тестирование, если два примитивных обертки числа представляют одинаковые примитивные номера
Например следующее, если заявление с участием двух примитивных чисел дает true
:
int i = 100;
double d = 100d;
if (i == d) {
System.out.println("equal");
}
Но следующее, если заявление, конечно, false
поскольку Number
экземпляры различных классов (Integer
и Double
):
int i = 100;
double d = 100d;
Number n1 = i;
Number n2 = d;
if (n1.equals(n2)) {
System.out.println("equal");
}
Есть ли какой-то релятивный общий тест, чтобы увидеть, если два экземпляра Number
(из которых я знаю, являются primi обертки) равны в том смысле, что их примитивные значения равны? В этом же контексте: существует ли некоторый надежный общий тест, чтобы увидеть, как экземпляры Number
сравниваются друг с другом с другими условными операторами !=
>
, <
, >=
и <=
?
На данный момент я пришел к следующему решению, но я не уверен, если это действительно надежно:
int i = 100;
double d = 100d;
Number n1 = i;
Number n2 = d;
if (n1.doubleValue() == n2.doubleValue()) {
System.out.println("equal");
}
Я думаю, что ваш путь хорош, так как вы обращаетесь к примитивным значениям, и вы делаете это, вызывая doubleValue, которые удостоверяются, что нет потерянных данных. –