Autor Tema: Java Cómo redondear a dos decimales con la clase BigDecimal precisión CU00907C.  (Leído 3014 veces)

ArielDVB

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 5
    • Ver Perfil
Hola. Les dejo mi solución al ejercicio CU00907C del tutorial de programación Java avanzada de aprenderaprogramar:

Citar
Crea un programa para el cálculo del importe final a partir del importe inicial y un porcentaje de impuestos. El importe inicial y el porcentaje de impuestos deben solicitarse al usuario. El programa debe mostrar el resultado ateniéndose a estas reglas: debe mostrarse el impuesto como resultado de calcular el importe inicial por el porcentaje dividido entre 100, con precisión de dos decimales y redondeo al entero más próximo o en caso de equidistancia, redondeo al entero mayor. Debe mostrarse el importe final como resultado de sumar el importe inicial con el impuesto, por tanto tendrá precisión de dos decimales.

Código: [Seleccionar]
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.Scanner;

public class TestImpuesto{
    public static void main(String[]args){
        System.out.print("Por favor introduzca el importe inicial: ");
        Scanner scan = new Scanner(System.in);
        BigDecimal importe = BigDecimal.valueOf(Double.valueOf((scan.nextLine())));
        System.out.print("por favor introduzca el porcentaje de impuestos: ");
        BigDecimal porcentaje_impuesto = BigDecimal.valueOf(Double.valueOf((scan.nextLine())));
        BigDecimal impuesto = importe.multiply(porcentaje_impuesto).divide(BigDecimal.valueOf(100.0));
        impuesto = impuesto.setScale(2,RoundingMode.HALF_UP);
        System.out.println("El impuesto a pagar es: "+impuesto+"\nEl importe final es: "+importe.add(impuesto));
    }
}

Desde ya muchas gracias por leerme.
« Última modificación: 05 de Mayo 2016, 19:37 por Alex Rodríguez »

ESOJ

  • Intermedio
  • ***
  • APR2.COM
  • Mensajes: 143
    • Ver Perfil
Re:Java. Redondear con la clase BigDecimal. Ejercicio CU00907C.
« Respuesta #1 en: 04 de Mayo 2016, 14:02 »
Hola Ariel. He revisado tu código y,en líneas generales es correcto.Has utilizado bien la clase BigDecimal que en el fondo es de lo que se trataba el ejercicio.

Otra forma de hacerlo sería utilizando diferentes clases para la entrada de teclado y para los cálculos,en vez de hacerlo en el main.

Una posible solución que se me ocurre seria:

Código: [Seleccionar]
import java.math.BigDecimal;
import java.math.RoundingMode;

public class CalculadoraImpuesto{ 

    public BigDecimal calculoImpuesto(BigDecimal importe,BigDecimal porcentaje_impuesto){
        BigDecimal calculoImpuesto =importe.multiply (porcentaje_impuesto).divide(BigDecimal.valueOf(100.0));
        calculoImpuesto = calculoImpuesto.setScale(2,RoundingMode.HALF_UP);
        return calculoImpuesto;
    }
}


Código: [Seleccionar]
import java.util.Scanner;
import java.math.BigDecimal;

public class EntradaTeclado {   
   
   public BigDecimal entradaTeclado(){
       Scanner scan = new Scanner(System.in);
        BigDecimal resultado = BigDecimal.valueOf(Double.valueOf(scan.nextLine()));
        return resultado;
    }
}


Código: [Seleccionar]
import java.math.BigDecimal;
import java.math.RoundingMode;

public class TestImpuesto{   
    public static void main(String[]args){
        BigDecimal impuesto,importe,porcentaje_impuesto;
        CalculadoraImpuesto d=new CalculadoraImpuesto();
        EntradaTeclado f=new EntradaTeclado();
        System.out.print("Por favor introduzca el importe inicial: ");
        importe=f.entradaTeclado();
        System.out.print("por favor introduzca el porcentaje de impuestos: ");
        porcentaje_impuesto = f.entradaTeclado();
        impuesto=d.calculoImpuesto(importe,porcentaje_impuesto);
        System.out.println("El impuesto a pagar es: "+impuesto+"\nEl importe final es: "+importe.add(impuesto));
    }
}

Un saludo
« Última modificación: 05 de Mayo 2016, 19:37 por Alex Rodríguez »

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".