Estoy trabajando en un proyecto en una empresa que le gustaría saber cuánto está pagando por hora a sus trabajadores. Para eso necesitamos entender las diferentes formas de redondear y formatear números en JavaScript. En el código ya existe una función que captura el sueldo mensual y calcula el costo por hora:
function gananciaPorHora (sueldo, horasTrabajadasMes) {
const sueldoHora = (sueldo / horasTrabajadasMes);
return sueldoHora;
}
Resultado de la función:
gananciaPorHora (3000,176);
El sueldoHora sería: 17.045454545454547. Pero, como estamos hablando de un valor monetario, este número solo debe tener dos decimales. Es decir, lo que queremos es redondear este resultado para reducir los decimales.
Como usamos JavaScript, ya existe un método de la clase Math
que redondea los números, el Math.round().
function gananciaPorHora (sueldo, horasTrabajadasMes) {
const sueldoHora = (sueldo / horasTrabajadasMes);
return Math.round (sueldoHora);
}
Resultado de la función, ahora usando Math.round()
gananciaPorHora(3000,176);
El valor de la respuesta fue 17, ya hemos resuelto el problema de los varios decimales, pero ahora no es muy preciso. Esto se debe a que el método Math.round()
devuelve el valor de un número redondeado al entero más cercano.
Como estamos trabajando con valores monetarios es importante conocer también los centavos, con la ayuda del método .toFixed() puedo controlar el número de decimales después de la coma de una manera más sencilla, indicando el número de decimales que quiero como parámetro.
Como queremos dejar la respuesta con dos decimales después de la coma, usamos toFixed(2)
, un punto importante a tener en cuenta es que el método .toFixed()
redondea el número hacia arriba, es decir, si tenemos, por ejemplo 11.123, el valor resultante es 11.12, ya si tenemos 20.555, el valor resultante 20.56. Otro aspecto importante es que su retorno será una string representando el número.
function gananciaPorHora (sueldo, horasTrabajadasMes) {
const sueldoHora = (sueldo / horasTrabajadasMes);
const total = sueldoHora.toFixed(2);
return total;
}
Ahora que dejamos el resultado de la función con dos decimales, ¿qué tal si dejamos el resultado formateado en dolares?
En JavaScript tenemos un método llamado toLocaleString()
que convierte un número en una string, ya tratando la cuestión del redondeo y convirtiendo a la moneda del país que queremos, en nuestro caso, el dolar, haciendo mucho más sencilla la tarea del programador.
El método toLocaleString() recibe algunos argumentos - un objeto literal con las propiedades -, en mi caso utilicé:
function gananciaPorHora (sueldo, horasTrabajadasMes) {
const sueldoHora = (sueldo / horasTrabajadasMes);
const formato = sueldoHora.toLocaleString('es', { style: 'currency', currency: 'USD' });
return formato ;
}
Utilizando el formateo toLocaleString
el resultado se vería así:
gananciaPorHora(3000,176); //USD'17,05'
En JavaScript tenemos otros métodos que se pueden utilizar para redondear como:
Math.ceil(11.123)
, el valor es 12Math.floor(11.789)
, el valor queda 11Si te interesa este tema, aquí en Alura tenemos capacitaciones de front-end, para principiantes y para aquellos que ya son desarrolladores web. En ellas, verás cómo programar en Javascript, HTML y CSS para construir sitios web.
Cursos de Programación, Front End, Data Science, Innovación y Gestión.
Luri es nuestra inteligencia artificial que resuelve dudas, da ejemplos prácticos y ayuda a profundizar aún más durante las clases. Puedes conversar con Luri hasta 100 mensajes por semana
Paga en moneda local en los siguientes países
Cursos de Programación, Front End, Data Science, Innovación y Gestión.
Luri es nuestra inteligencia artificial que resuelve dudas, da ejemplos prácticos y ayuda a profundizar aún más durante las clases. Puedes conversar con Luri hasta 100 mensajes por semana
Paga en moneda local en los siguientes países
Puedes realizar el pago de tus planes en moneda local en los siguientes países:
País | |||||||
---|---|---|---|---|---|---|---|
Plan Semestral |
487.37
BOB |
68314.51
CLP |
305385.67
COP |
65.90
USD |
265.11
PEN |
1424.44
MXN |
2977.87
UYU |
Plan Anual |
738.82
BOB |
103560.24
CLP |
462944.29
COP |
99.90
USD |
401.89
PEN |
2159.35
MXN |
4514.26
UYU |
Acceso a todos
los cursos
Estudia las 24 horas,
dónde y cuándo quieras
Nuevos cursos
cada semana