Autor Tema: Java Redondear a 2 o + decimales. BigDecimal, RoundingMode, BigInteger CU00907C  (Leído 2885 veces)

LuisM

  • Intermedio
  • ***
  • APR2.COM
  • Mensajes: 131
    • Ver Perfil
Hola a todos !!, paso a dejar el código del ejercicio propuesto en la clase CU00907C del tutorial de Java Avanzado de aprenderaprogramar. Desde ya muchas gracias.
Un saludo, Luis

EJERCICIO


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.

Ejemplo de resultados a obtener:

Por favor introduzca el importe inicial: 0.70

Por favor introduzca el porcentaje de impuestos: 5

El impuesto a pagar es: 0.04

El importe final es: 0.74


Código: [Seleccionar]
public class ImporteFinal {
    public static void main(String[] args) {
        EntradaDeTeclado entrada = new EntradaDeTeclado();
        String strImporte = "";
        double importeInicial=0;
        double tasaImpositiva=0;
        double impuesto=0;
        double importeFinal=0;
        double parteEntera=0;
        System.out.print("Por favor introduzca el importe inicial:");
        entrada.pedirEntrada();
        strImporte = entrada.getEntrada();
        importeInicial = Double.parseDouble(strImporte);
        System.out.print("Por favor introduzca el porcentaje de impuesto:");
        entrada.pedirEntrada();
        strImporte = entrada.getEntrada();
        tasaImpositiva = Double.parseDouble(strImporte);
        // se divide por 100 porque se ingresa la tasa como entero cuando el valor real son centésimos
        impuesto = importeInicial * tasaImpositiva / 100;
        parteEntera=Math.floor(impuesto);
        // se procede a rendondear el valor del impuesto para que sea con 2 decimales
        impuesto=(impuesto-parteEntera)*100;
        impuesto=Math.round(impuesto);
        impuesto=(impuesto/100)+parteEntera;
        System.out.println("El impuesto a pagar es:"+impuesto);
        importeFinal = importeInicial + impuesto;
        System.out.println("El importe final es:"+importeFinal);
    }
}

Clase para ingresar los datos por consola
Código: [Seleccionar]
import java.util.Scanner; //Importación del código de la clase Scanner desde la biblioteca Java
// Definimos una clase EntradaDeTeclado aprenderaprogramar.com
public class EntradaDeTeclado {
    private String entradaTeclado; //Variable de instancia (campo) de la clase
    public EntradaDeTeclado ()  { //Constructor
        entradaTeclado="";
     //   pedirEntrada(); //Esto es una llamada a un método interno. Al crear un objeto ejecutamos el método
    } //Cierre del constructor
    public void pedirEntrada ()  {  //Método de la clase         
        Scanner entradaEscaner = new Scanner (System.in);
        entradaTeclado = entradaEscaner.nextLine ();
        } //Cierre del método pedirEntrada
    public String getEntrada () { return entradaTeclado; } //Cierre del método getEntrada
    public String getPrimeraPalabra ()  {
               for (int i=0; i < entradaTeclado.length() - 1; i++) {
            if (entradaTeclado.substring (i, i+1).equals(" ") ) {     //IMPORTANTÍSIMO: COMPARAMOS CON EQUALS
                return entradaTeclado.substring(0, i+1);         }
        }
        return entradaTeclado;  //Caso de que no se detecte ningún espacio devolvemos lo que haya
    } //Cierre del método getPrimeraPalabra
    public int getLongitud ()  {  //Método de la clase
        return entradaTeclado.length();
    } //Cierre del método getLongitud
} //Cierre de la clase
« Última modificación: 11 de Febrero 2018, 21:35 por Ogramar »

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2660
    • Ver Perfil
Buenas, veo el ejercicio bien resuelto. En otros hilos se ha propuesto su solución usando BigDecimal, pero esta solución que has planteado aparentemente es buena porque es simple. Lo bueno, si simple, dos veces bueno.

Salu2

 

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".