Autor Tema: Java Redondear a 2 o más decimales problema precisión decimal dígitos CU00907C  (Leído 2032 veces)

DRANXZ88

  • Avanzado
  • ****
  • Mensajes: 356
    • Ver Perfil
Ejercicios resueltos de la java avanzado 1 de la entrega CU00907C

Solución propuesta para la entrega CU00907C del curso avanzado de proramación Java

Código: [Seleccionar]
package calcularimporte;

public class CalcularImporte {

    public static void main(String[] args) {
        EntradaDeTeclado entrada = new EntradaDeTeclado();

        double importeinicial = 0;
        double importefinal = 0;
        double porcentajeimpuesto = 0;
        double impuesto = 0;
        System.out.println("Por favor introduzca el importe inicial: ");
        entrada.setEntrada();
        importeinicial = Double.valueOf(entrada.getEntrada());
        System.out.println("Por favor introduzca el porcentaje de impuestos: ");
        entrada.setEntrada();
        porcentajeimpuesto = Double.valueOf(entrada.getEntrada());
        impuesto = (importeinicial * porcentajeimpuesto) / 100;
        double impuestoapagar = redondearDecimales(fijarNumero(impuesto, 2), 2);
        System.out.println("El impuesto a pagar es: " + impuestoapagar);
        importefinal = importeinicial + impuestoapagar;
        System.out.println("El impuesto a pagar es: " + redondearDecimales(fijarNumero(importefinal, 2), 2));
    }

    public static double redondearDecimales(double valorInicial, int numeroDecimales) {
        double parteEntera, resultado;
        resultado = valorInicial;
        parteEntera = Math.floor(resultado);
        resultado = (resultado - parteEntera) * Math.pow(10, numeroDecimales);
        resultado = Math.round(resultado);
        resultado = (resultado / Math.pow(10, numeroDecimales)) + parteEntera;
        return resultado;
    }

    public static double fijarNumero(double numero, int digitos) {
        double resultado;
        resultado = numero * Math.pow(10, digitos);
        resultado = Math.round(resultado);
        resultado = resultado / Math.pow(10, digitos);
        return resultado;
    }
}

Clase Entrada de teclado

Código: [Seleccionar]
package registrarpaises;

import java.util.Scanner;

public class EntradaDeTeclado {

    private String entradaTeclado;
    Scanner sc = new Scanner(System.in);

    public EntradaDeTeclado() {
        entradaTeclado = "";
    }

    public String setEntrada() {
        entradaTeclado = sc.nextLine();
        return entradaTeclado;
    }
    public String getEntrada() {
        return entradaTeclado;
    }

}
« Última modificación: 14 de Junio 2020, 17:41 por Ogramar »

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2662
    • Ver Perfil
Buenas, para quien revise este ejercicio, cumple con lo que se pedía y funciona correctamente.

Hay un detalle que no veo correcto. Se incluye un método

Código: [Seleccionar]
    public String setEntrada() {
        entradaTeclado = sc.nextLine();
        return entradaTeclado;
    }

Los métodos set, por convención, no llevan return. Por tanto este nombre de método no es correcto de acuerdo con la convención que se suele seguir en programación Java.

De resto todo bien.

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