antoniodiabcro :
Uso de Java (JDK 1.8.0_66 y JDK 1.8.0_181) y su base de clase BigDecimal mientras realiza las siguientes operaciones:
BigDecimal res = new BigDecimal("290");
BigDecimal sub = new BigDecimal("22");
sub = sub.subtract(new BigDecimal("7"));
sub = sub.subtract(new BigDecimal("4"));
res = res.divide(new BigDecimal("22"), 2, RoundingMode.HALF_EVEN);
res = res.multiply(sub);
res = res.setScale(2, RoundingMode.HALF_EVEN);
produce el resultado de 144,98 mientras esperado es 145.
¿Por qué ocurre esto? He intentado local y un compilador en línea. Es establecer la escala sucediendo demasiado tarde? Y cómo puedo obtener un cálculo más preciso?
Esta fórmula se utiliza para representar cálculos valor monetario.
Joni:
La respuesta correcta es 144.98. 290/22 a computar a una precisón de dos decimales. El resultado es 13,18. Y 13.18 * 11 es 144.98
Si el cálculo es "si tuviera que pagar $ 145 en 11 cuotas iguales, qué tan grande debe ser las cuotas" que tendría que tomar la diferencia de 2 centavos y añadirlos a los plazos.