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: @mayakoski en 04 de Diciembre 2019, 02:37
-
Dejo mi solución propuesta para el ejercicio CU00907C del curso de programación Java avanzada de aprenderaprogramar
package claseCU00907C;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.Scanner;
public class ejercicioCU00907C {
public static void main(String[] args) {
Scanner entradaTeclado = new Scanner(System.in);
double importeInicial;
double porcentajeImpuesto;
System.out.println("Por favor introduzca el importe inicial: ");
importeInicial = entradaTeclado.nextDouble();
System.out.println("Por favor introduzca el porcentaje de impuestos: ");
porcentajeImpuesto = entradaTeclado.nextDouble();
System.out.println("El impuesto a pagar es: " + BigDecimal.valueOf(importeInicial *porcentajeImpuesto/100).setScale(2, RoundingMode.CEILING));
System.out.println("El importe final es: " + BigDecimal.valueOf(importeInicial).add(BigDecimal.valueOf(importeInicial *porcentajeImpuesto/100).setScale(2, RoundingMode.CEILING)));
}
}
-
Buenas, he revisado este ejercicio y desde mi punto de vista no está correcto.
Si introducimos como importe inicial 0,69 y como porcentaje de impuestos 5 obtenemos esto:
Por favor introduzca el importe inicial: 0,69
Por favor introduzca el porcentaje de impuestos: 5
El impuesto a pagar es: 0.04
El importe final es: 0.73
Sin embargo, el impuesto es 0.0345 que se redondearía a 0.03 en lugar de a 0.04 y el importe final debería ser 0.72 en lugar de 0.73
Por tanto parece que el redondeo no lo hace conforme a lo que pedía el enunciado del ejercicio, y al fallar el redondeo falla el resultado final.
Puede verse una solución correcta del ejercicio en https://aprenderaprogramar.com/foros/index.php?topic=5672.0
Salu2
-
Gracias la observación, he modificado mi código y realice pruebas con el ejemplo que me remites y con otros valores, me funciono correctamente en mis pruebas
Saludos
package claseCU00907C;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.Scanner;
public class ejercicioCU00907C {
public static void main(String[] args) {
Scanner entradaTeclado = new Scanner(System.in);
double importeInicial;
double porcentajeImpuesto;
System.out.println("Por favor introduzca el importe inicial: ");
importeInicial = entradaTeclado.nextDouble();
System.out.println("Por favor introduzca el porcentaje de impuestos: ");
porcentajeImpuesto = entradaTeclado.nextDouble();
System.out.println("El impuesto a pagar es: " + BigDecimal.valueOf(importeInicial *porcentajeImpuesto/100).setScale(2, RoundingMode.HALF_UP));
System.out.println("El importe final es: " + BigDecimal.valueOf(importeInicial).add(BigDecimal.valueOf(importeInicial *porcentajeImpuesto/100).setScale(2, RoundingMode.HALF_UP)));
}
}