Foros aprenderaprogramar.com

Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: Luis Fdo Carvajal en 12 de Mayo 2017, 16:35

Título: Java trabajar con alta precisión decimal evitando redondeos incorrectos CU00907C
Publicado por: Luis Fdo Carvajal en 12 de Mayo 2017, 16:35
Buenos días, adjunto el código del ejercicio CU00907C del tutorial de programador Java avanzado  para su revisión.

Gracias

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]
import java.util.Scanner;
import java.math.BigDecimal;
import java.math.RoundingMode;

/**
 *
 * @author ITCO1724
 */
public class CalculaImpuesto {

    public static void main(String[] args) {
       
        Scanner sc = new Scanner(System.in);
       
       
       do {
       
       System.out.print("Introduzca el importe inicial: ");
       BigDecimal importe = BigDecimal.valueOf(Double.valueOf(sc.nextLine())); 
       System.out.print("Por favor introduzca el porcentaje de impuestos: ");
       BigDecimal impuesto = BigDecimal.valueOf(Double.valueOf(sc.nextLine()));

       BigDecimal CalculaImpuesto = importe.multiply (impuesto).divide(BigDecimal.valueOf(100.0));
       CalculaImpuesto = CalculaImpuesto.setScale(2,RoundingMode.HALF_UP);  //Establece dos decimales y precisión hacia abajo
       
       System.out.print("El impuesto a pagar es : " + CalculaImpuesto);
       System.out.println();
       System.out.println();
       System.out.print("El importe final es : " + importe.add(CalculaImpuesto) );

       String entrada = sc.nextLine();
       System.out.print("¿Otro valor (s/n)?: " + entrada);
       }
       
       while (!"n".equals(sc.nextLine()));
       System.out.println();
    } 
}
Título: Re:Java trabajar con alta precisión decimal evitando redondeos incorrectos CU00907C
Publicado por: Alex Rodríguez en 18 de Junio 2017, 19:19
Hola Luis Fdo Carvajal lo veo todo correcto

Saludos