Foros aprenderaprogramar.com

Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: pedro,, en 14 de Diciembre 2016, 14:15

Título: Java Precisión decimal y redondeo con clases BigDecimal y RoundingMode CU00907C#
Publicado por: pedro,, en 14 de Diciembre 2016, 14:15
Hola. Dejo una posible solución al ejercicio CU00907C del curso avanzado de programación Java.

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

public class TestEjercicio {

public static void main(String[] args) {

Scanner entrada = new Scanner(System.in);
BigDecimal impuestoFinal, importeFinal, importe, impuesto;

System.out.print("Introduzca el importe inicial: ");
importe = BigDecimal.valueOf(Double.parseDouble(entrada.nextLine()));

System.out.print("\nIntroduzca el porcentanje de impuestos: ");
impuesto = BigDecimal.valueOf(Double.parseDouble(entrada.nextLine()));
entrada.close();

impuestoFinal = redondearNumeroBigDecimal(2, calcularImpuesto(importe, impuesto));
System.out.println("\nEl impuesto a pagar es: " + impuestoFinal);
importeFinal = redondearNumeroBigDecimal(2, sumarDosBigDecimal(importe, impuestoFinal));
System.out.println("El importe final es: " + importeFinal);

}

public static BigDecimal sumarDosBigDecimal(BigDecimal num1, BigDecimal num2) {
BigDecimal resultado = num1.add(num2);
return resultado;
}
public static BigDecimal calcularImpuesto(BigDecimal importeInicial, BigDecimal impuestos) {
BigDecimal impuesto = importeInicial.multiply(impuestos).divide(BigDecimal.valueOf(100));
return impuesto;
}

public static BigDecimal redondearNumeroBigDecimal(int numDecimales, BigDecimal numBig) {
numBig = numBig.setScale(numDecimales, RoundingMode.HALF_UP);
return numBig;
}

}

Saludos.  ;D
Título: Re:Java. Precisión decimal y redondeo con clases BigDecimal y RoundingMode CU00907C
Publicado por: Mario R. Rancel en 19 de Diciembre 2016, 20:12
Hola Pedro, yo lo veo todo correcto. Aprovecho para agradecerte una vez más tu colaboración en los foros. Un abrazo,