Truncar un double

Aquí Manusoftar, otra vez con una duda de Java, es que estoy cursando Programación 1 en la facultad y se les ocurrió dar Java.
Bueno, yendo al centro del asunto.
Me piden esto:
Ingresar dos números reales y mostrar la división con sólo dos decimales.
ACLARACIÓN: Estamos hablando de la parte nativa y la consola (el programa no debe ser gráfico)
Hasta la parte de ingresar los números y efectuar la operación no tengo problemas
El problema surge en que me quemé el cerebro intentando truncar el cociente ya que no puedo redondearlo!, tiene que ser TRUNCADO a 2 decimales, incluso encontré una forma original y útil:
double d = 12.456;
d= d*100;
Float f = new Float(d);
d = f.intValue();
d = d/100;
System.out.println("El valo es "+d);
Pero si tengo 25 / 3 que da 8.33333333333 (periódico), el double me da Infinity!
No se más que hacer!
Espero se te ocurra una idea :S
Atentmante y gracias de antemano. Manuel Fernández.

1 Respuesta

Respuesta
1
La clase que tienes que utilizar es DecimalFormat
http://java.sun.com/j2se/1.4.2/docs/api/java/text/DecimalFormat.html
E n el API tienes un pequeño ejemplo con el modo de utilizar el objeto. La cosa es, tienes que crear un objeto Decimal format donde especifiques cómo quieres representar los números mediante un patrón (echale un vistazo a la página del API, ahí te detallan todos los patrones que existen). En tu caso le tendrías que decir que quieres unicamente 2 decimales.
Una vez tengas creado el objeto DecimalFormat tienes que llamar al método "format" y pasarle tu tipo "doble". El método te devolverá un objeto "String" con el número escrito tal y como lo quieres :)
Lo dicho, si necesitas cualquier aclaración o te surgen más dudas, ya sabes donde encontrarme.
Estuve leyendo acerca de esa clase pero por lo que vi hace redondeo y yo necesito evitar eso, el único problema grave que tengo es que si almaceno el cociente en una variable double, dependiendo de la operación, me tira Infinity (por ejemplo 25/3) porque es periódico y es eso lo que necesito evitar, probé almacenando el resultado en una variable long pero nada tiene que ver el número que obtengo con el resultado de la división!
Atentamente. Manuel Fernández.
No te preocupes, te agradezco la ayuda pero ya encontré el problema, aunque me llamó la atención.
El punto es que yo declaré las dos variables double como numero1 y numero2, luego les asigne los valores a dividir pero cuando hice la división, por un error de tipeo puse cociente=numero1/numero1; (el mismo numero como numerador y denominador)! Y no se porqué en vez de dar 1 me dio infinity, pero arreglé eso y ahora me da el resultado correcto.
Igual te doy tus estrellitas! :) (Y de hecho ya te coloqué como experto favorito así tenés mayor popularidad)!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas