Comprender las operaciones matemáticas utilizando BigDecimal en Java

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.

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=360547&siteId=1
Recomendado
Clasificación