Soy nuevo en javascript. Estoy tratando de codificar un programa simple que tiene 2 variables, cada una contiene un número promedio de algunos cálculos, y si no, debería imprimir la variable que contiene el promedio más alto como el ganador.
sin usar toFixed() no hay problema, la variable más alta es la ganadora y se imprime, pero cuando uso toFixed(), imprime la variable más baja, no la más alta. ¿porqué es eso? imagen del problema
aquí está el código:
const avgDolphins = ((96 + 108 + 89) / 3).toFixed(2); const avgKoalas = ((88 + 91 + 911) / 3).toFixed(2); console.log(`dolphins = ${avgDolphins} \nkoalas = ${avgKoalas}`) if (avgDolphins > avgKoalas) { console.log(`Team Dolphins WON! with ${avgDolphins} Average score!`); } else if (avgKoalas > avgDolphins) { console.log(`Team Koalas WON! with ${avgKoalas} Average score!`); } else { console.log(`DRAW! Both teams got the same average score which is ${avgKoalas}`); }Tanto .toPrecision(2) ( Referencia ) como .toFixed(2) ( Referencia ) devolverán una cadena. Puede usar un parseFloat alrededor de su cálculo para solucionar esto.
Así que el código resultante se verá así:
const avgDolphins = parseFloat(((96 + 108 + 89) / 3).toFixed(2)); const avgKoalas = parseFloat(((88 + 91 + 911) / 3).toFixed(2)); console.log(`dolphins = ${avgDolphins} \nkoalas = ${avgKoalas}`) if (avgDolphins > avgKoalas) { console.log(`Team Dolphins WON! with ${avgDolphins} Average score!`); } else if (avgKoalas > avgDolphins) { console.log(`Team Koalas WON! with ${avgKoalas} Average score!`); } else { console.log(`DRAW! Both teams got the same average score which is ${avgKoalas}`); }