Usted dice que no sabe si sus números son números enteros o flotan .. Cuando usas la clase Number
, el compilador tampoco sabe si tus números son enteros, flotantes o s Otra cosa. Como resultado, los operadores matemáticos básicos como + y - no funcionan; la computadora no sabría cómo manejar los valores.
Start Edit
Sobre la base de la discusión, pensé un ejemplo podría ayudar. Las computadoras almacenan números en coma flotante como dos partes, un coeficiente y un exponente. Entonces, en un sistema teórico, 001110 podría dividirse como 0011 10 o 3 = 9. Pero los números enteros positivos almacenan los números como binarios, por lo que 001110 también podría significar 2 + 4 + 8 = 14. Cuando usa la clase Number
, le está diciendo a la computadora que no sabe si el número es un flotante o un int o qué, entonces sabe que tiene 001110 pero no sabe si eso significa 9 o 14 o algún otro valor.
FIN EDITAR
Lo que puede hacer es hacer un poco de asunción y convertir a uno de los tipos que hacer los cálculos. Lo que podría tener
Number c = a.intValue() + b.intValue();
que bien podría convertirse en
Integer c = a.intValue() + b.intValue();
si estás dispuesto a sufrir algún error de redondeo, o
Float c = a.floatValue() + b.floatValue();
si sospecha que usted' no se trata de enteros y está bien con posibles problemas menores de precisión. O, si prefiere tomar un pequeño golpe de rendimiento en lugar de que el error,
BigDecimal c = new BigDecimal(a.floatValue()).add(new BigDecimal(b.floatValue()));
¿Son realmente asignados así? Quiero decir, ¿es válido Number a = primitiveNumber? Si los obtiene de algún Método que devuelve "algo se extiende Número", podría verificar si el Número devuelto es una instancia de Doble o Float o BigDecimal o lo que sea. – Tedil
@Tedil Sí, una asignación de este tipo es posible desde Java 1.5, gracias a una característica conocida como "autoboxing".El número primitivo '2' es un' int', que está encuadrado en un 'Entero', que es una subclase de' Número'. –
Puede usar métodos sobrecargados también :) Funciona para todos los casos – Mob