Interés compuesto con Java


¿Alguna duda más?

Es un ejercicio que me sirvio para aprender a programar (con C). Se trata de un pequeño ejemplo de como calcular el interés compuesto. El interés compuesto es el valor futuro de una inversión que se hace tomando en cuenta el interés y el plazo final de ese pago.
Este código lo hize para la materia de ingeniería económica.

Antes de comenzar es necesario tomar en cuenta los siguiente.

  • Comprender qué es lo que se quiere obtener (en este caso el interés compuesto)
  • Definir las variables necesarias (cantidad inicial, tasa de interés, número de periodos)
  • La librería Swing para la interfaz gráfica

Para calcular el interés compuesto se tiene la siguiente fórmula:
Fórmula--> Ic= cant_inicial * (1+tasa/100)^periodos

Pseudocódigo

Integer periodo;Double
prestamo,tasa;

Escribe('Prestamo')Lee(prestamo)

Escribe('Tasa')Lee(tasa)

Escribe('Periodo')Lee(periodo)

Para (int i=0;i<=periodo;i++))Hasta

Ic= cant_inicial * Math.pow(1+tasa/100,i)

Escribe ('Interés compuesto'+Ic+'para'+i)

Fin_Para


import javax.swing.*;
import javax.swing.JOptionPane;
import java.awt.event.*;
import javax.swing.JTextArea;
import javax.swing.JScrollPane;

public class calculo extends JFrame{
private JTextField campoPrestamo;
private JTextField campoTasa;
private JTextField campoPeriodo;
/*
@Autor:CARRARO
@2010
*/

//constructor
public calculo(){


//Etiquetas
JLabel etiquetaPrestamo= new JLabel("Préstamo:");
JLabel etiquetaTasa= new JLabel("Tasa (%):");
JLabel etiquetaPeriodo= new JLabel("Periodo:");
JLabel etiquetaCompuesto= new JLabel("Interés compuesto:");
//botones
JButton calcular=new JButton("Calcular");
JButton salir=new JButton("Quitar");

//tama&ntilde;o
campoPrestamo=new JTextField(6);
campoTasa=new JTextField(6);
campoPeriodo=new JTextField(6);

JPanel panel=new JPanel();//contenedor


panel.add(etiquetaPrestamo);
panel.add(campoPrestamo);
panel.add(etiquetaTasa);
panel.add(campoTasa);
panel.add(etiquetaPeriodo);
panel.add(campoPeriodo);

panel.add(calcular);
panel.add(salir);

add(panel);

/*EVENTOS*/
salir.addActionListener(new ActionListener(){
        public void actionPerformed(ActionEvent evento){
                System.exit(1);
        }
}
);//salida


calcular.addActionListener(new ActionListener(){
        public void actionPerformed(ActionEvent evento){
        //NumberFormat dinero=NumberFormat.getCurrencyInstance(Locale.US);
       
        Double prestamo,tasa,compuesto;int periodo,i;  
               
               
                prestamo=Double.parseDouble(campoPrestamo.getText());
               
        tasa=Double.parseDouble(campoTasa.getText());
               
        periodo=Integer.parseInt(campoPeriodo.getText());
       
        //------------------------------------------------------------
        JTextArea salida=new JTextArea(17,20);
       
        JScrollPane scrolle=new JScrollPane(salida);
       
        salida.setText("Mes\tMonto\n");
        for(i=0;i<=periodo;i++){
                compuesto=prestamo*Math.pow(1+tasa/100,i);
               
                salida.append(i+"\t$"+compuesto+"\n");
               
        }//fin for
        //----------------------------------------------------------------------
        JOptionPane.showMessageDialog(null,scrolle,"Interés compuesto(--resultado--)",JOptionPane.INFORMATION_MESSAGE);
               
        }
}
);//calcular





/*EVENTOS*/

}//fin constructor



public static void main(String args[]){
//objeto y su instancia
calculo ver= new calculo();

ver.setTitle("Interés compuesto en JAVA (Carraro )");
ver.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
ver.setSize(420,200);ver.setVisible(true);

}//fin main


}//fin clase princ.

Puedes modificarlo, por ejemplo, me faltó el boton "limpiar". Espero les sirva. :)

Comentarios

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de luxspes

Usa BigDecimal no Double

Buen ejemplo, pero no olvides usar BigDecimal y no Double, o te encontraras con sorpresas desagradables en el resultado.

Gracias por la sugerencia

Tienes razón, me falto la función para redondear el resultado...no conocia BigDecimal

Imagen de luxspes

No solo para redondear,

No solo para redondear, todos los pasos del calculo es mejor realizarlos con BigDecimal

Imagen de ezamudio

No sólo Java

El rollo del punto flotante no es un problema exclusivo de Java. Hace poco hablaron del tema en Slashdot.