InicioInfoJava y el problema de usar Double + Solución

Java y el problema de usar Double + Solución

Info9/1/2012
El Problema "Double"

Es un problema ya viejo que todavía Java no quiere desprenderse del todo por asuntos de compatibilidad con versiones viejas, el bendito problema del "Double" o numero Double, este tipo de variable númerica, no tiene exactitud en los cálculos y no solo eso, es muy difícil manipularla, por eso nació hace algun tiempo la clase BigDecimal, que si Dios quiere pronto sustiuira a la clase Double, de hecho ya cuenta con un extenso soporte de documentación en la página de Oracle.

A raíz de esto, les comparto esta pequeña calculadora que resuelve estos problemas, y que además retorna los valores con dos decimales aunque pudieran mostrar muchos más. Además trabaja con String para más comodidad con los TextField(), etc...




package Utilidad;
import java.math.BigDecimal;
/**
*
* author JesusEnTiConfio
*/
public class Calculadora {


public String multiplicar(String valor1,String valor2){
BigDecimal deci1=new BigDecimal (Double.parseDouble(valor1));
BigDecimal deci2=new BigDecimal (Double.parseDouble(valor2));
deci1=deci1.setScale(2,BigDecimal.ROUND_HALF_UP);
deci2=deci2.setScale(2,BigDecimal.ROUND_HALF_UP);
BigDecimal resultado=deci1.multiply(deci2);
resultado=resultado.setScale(2,BigDecimal.ROUND_HALF_UP);
return resultado+"";
}


public String sumar(String valor1,String valor2){
BigDecimal deci1=new BigDecimal (Double.parseDouble(valor1));
BigDecimal deci2=new BigDecimal (Double.parseDouble(valor2));
deci1=deci1.setScale(2,BigDecimal.ROUND_HALF_UP);
deci2=deci2.setScale(2,BigDecimal.ROUND_HALF_UP);
BigDecimal resultado=deci1.add(deci2);

return resultado.toString();
}

public String restar(String valor1,String valor2){
BigDecimal deci1=new BigDecimal (Double.parseDouble(valor1));
BigDecimal deci2=new BigDecimal (Double.parseDouble(valor2));
deci1=deci1.setScale(2,BigDecimal.ROUND_HALF_UP);
deci2=deci2.setScale(2,BigDecimal.ROUND_HALF_UP);
BigDecimal resultado=deci1.subtract(deci2);

return resultado.toString();
}

public String dividir(String valor1,String valor2){
BigDecimal deci1=new BigDecimal (Double.parseDouble(valor1));
BigDecimal deci2=new BigDecimal (Double.parseDouble(valor2));
BigDecimal resultado=deci1.divide(deci2,2,BigDecimal.ROUND_HALF_UP);
return resultado+"";
}


}



Dios los bendiga
Datos archivados del Taringa! original
27puntos
487visitas
0comentarios
Actividad nueva en Posteamelo
0puntos
4visitas
0comentarios
Dar puntos:

Dejá tu comentario

0/2000

Autor del Post

u
uncatolico🇦🇷
Usuario
Puntos0
Posts16
Ver perfil →
PosteameloArchivo Histórico de Taringa! (2004-2017). Preservando la inteligencia colectiva de la internet hispanohablante.

CONTACTO

18 de Septiembre 455, Casilla 52

Chillán, Región de Ñuble, Chile

Solo correo postal

© 2026 Posteamelo.com. No afiliado con Taringa! ni sus sucesores.

Contenido preservado con fines históricos y culturales.