Math.round(num * 100) / 100
Caso 1:
15.625 * 19 = 296.875
Cuando aplicamos el código anterior, el resultado final es 296,88, que es correcto .
var test = 15.625 * 19; test = Math.round(test * 100) / 100; console.log( test ); // Return 296.88 (Correct)
Caso 2:
15.225 * 19 = 289.275
Cuando aplicamos el código anterior, el resultado final es 289.27 que no es correcto .
var test = 15.225 * 19; test = Math.round(test * 100) / 100; console.log( test ); // Return 289.27 (Not correct)
Por lo tanto, traté de desglosar y descubrí que:
289.275 * 100 = 28927.499999999996 Math.round(28927.499999999996) = 28927 Then, 28927/100 = 289.27
Se supone que 0.5 se convirtió en 0.499999999996 después de multiplicar por 100
(^ Esta es la parte en la que estoy atascado y no estoy seguro de cómo proceder)
Para uso temporal, hice algo como esto a continuación:
var compiledPrice = 289.275; console.log( 'compiledPrice1 : ' + compiledPrice ); // 289.275 compiledPrice = compiledPrice * 10; console.log( 'compiledPrice2 : ' + compiledPrice ); // 2892.75 compiledPrice = compiledPrice.toFixed(1); console.log( 'compiledPrice3 : ' + compiledPrice ); // 2892.8 compiledPrice = compiledPrice / 10; console.log( 'compiledPrice4 : ' + compiledPrice ); // 289.28000000000003 compiledPrice = compiledPrice.toFixed(2); console.log( 'compiledPrice5 : ' + compiledPrice ); // 289.28
No estoy seguro de si esta es la forma correcta de resolver este problema, espero que alguien pueda arrojarme algo de luz, por favor.