Esta es una breve guía sobre cómo redondear un número a 2 decimales usando JavaScript. En el siguiente ejemplo, también proporcionaré una alternativa en JavaScript a la función number_format de PHP.
Echa un vistazo a la función JavaScript personalizada que aparece a continuación:
/** * Custom JavaScript function that rounds a number w/ * decimal places. * * @param val - The value that you want to format with decimal places. * @param decimals - The number of decimal places that should be used. * @returns {float} */function number_format(val, decimals){ //Parse the value as a float value val = parseFloat(val); //Format the value w/ the specified number //of decimal places and return it. return val.toFixed(decimals);}
Llamé a esta función number_format porque ese es el nombre de una popular función PHP que realiza una operación similar.
Nuestra función personalizada recibe dos parámetros:
- val: El número que queremos redondear.
- decimales: El número de decimales a los que se debe redondear el número.
Dentro de nuestra función, parseamos la variable val como un float utilizando la función parseFloat de JavaScript. Hicimos esto para que nuestra función también pueda manejar variables de cadena. Si no analizas una variable de cadena antes de usar el método toFixed(), tu código lanzará el siguiente Uncaught TypeError:
Uncaught TypeError: val.toFixed no es una función
Esto se debe a que el Number.prototype.toFixed() sólo puede usarse con variables Number como floats y enteros.
Nota que a diferencia de la función number_format de PHP, esta función no añade separadores de miles.
Puede probar esta función utilizando los siguientes ejemplos:
console.log(number_format(2.333, 2)); //Result: 2.33console.log(number_format("9.01345", 2)); //Result: 9.01console.log(number_format(5, 2)); //Result: 5.00console.log(number_format("383.48910093", 4)); //Result: 383.4891console.log(number_format(33.92039, 1)); //Result: 33.9
Como puede ver, esta función puede manejar tanto números como cadenas:
- Pudimos redondear el flotador 2.333 a 2 decimales.
- La cadena «9,01345» se redondeó a 9,01.
- Un número entero como 5 se convertirá en «5.00», con dos ceros añadidos detrás del lugar decimal.
- Para «383.48910093», cambiamos el segundo parámetro a 4. Esto redondeó el número a 4 lugares decimales, resultando en 383.4891.
- Por último, redondeamos 33.92039 a 1 lugar decimal, resultando en 33.9.
Esperamos que el código anterior te haya resultado útil!