2010-03-10 9 views
5

¿Estoy pensando en si es posible o no crear un tipo de datos propio? Por lo tanto, si necesita más precisión, no es compatible con uno de los tipos básicos, puede simplemente "crear" sus propios requisitos.Java: ¿Hace su propio tipo de datos? (por ejemplo, long long double?)

¿Es eso posible y cómo?

+3

Le recomendaría leer acerca de la programación orientada a objetos. Puede usar clases para definir sus propios tipos de datos. – Jonathan

+3

¡Una clase java definida por el usuario también es un tipo! Simplemente agregue algunos miembros de tipos largo, largo para contener partes completas y fraccionarias de un número. Agregue métodos para agregar/restar ¡y listo! – Elister

+0

@Andreas Hornig no dude en aceptar una respuesta que responda a su pregunta. – Bozho

Respuesta

16

Tome un vistazo a BigDecimal

inmutable, de precisión arbitraria firmado números decimales

Y para responder a su pregunta - sí, se puede tipos de datos de cajas, pero no puede ser primitiva tipos (como int, double, etc.). Tienen que ser clases, como en el caso de BigDecimal (y BigInteger)

Y un consejo adicional para usar las clases Big*, tal como están escritas, son inmutables. Esto significa que llamar al add(..) no cambia el objeto; devuelve un nuevo objeto que refleja el cambio. Es decir.

BigDecimal dec = BigDecimal.ZERO; 
dec.add(new BigDecimal(5)); // nothing happens 
dec = dec.add(new BigDecimal(5)); // this works 
8

No puede crear sus propios tipos de valor personalizado en Java, si eso es lo que está pidiendo. Por supuesto, puede crear sus propios tipos de referencia, eso es lo que cada clase en Java es, después de todo.

Pero como han dicho otros, BigDecimal (y BigInteger) deberían ser sus puntos de partida para los tipos numéricos con más precisión.

1

Todo es siempre posible.

Eso no significa que alguien aún no lo haya hecho antes, sin embargo, y mucho más eficientemente que nunca.

BigInteger y BigDecimal es lo que estás buscando.