Playground - Calcula la propina
Clase 8 de 99 • 30 días de JavaScript
Contenido del curso
Clase 8 de 99 • 30 días de JavaScript
Contenido del curso
Alvaro Eduardo Garzón Pira
Leonardo de los angeles Espinoza Hernandez
Diego Toro Cárdenas
Leonardo de los angeles Espinoza Hernandez
Ricardo Alfonso Chavez Vilcapoma
Juan Carlos Montilla Sánchez
Leonardo de los angeles Espinoza Hernandez
Santiago Palacio Vásquez
SuP uta Madre
Leonardo de los angeles Espinoza Hernandez
Luis Castro
Cristian Adrian Saqueta Melo
Erika Brito
Ivan Cio Toral
José Ignacio Pérez
Isaac Guibaldo Villajuana Hernández
Andrés Felipe Serna Giraldo
Alma García Romero
Duvan Alexis Palomino Ramirez
Fernando Antonio Flores Velez
jorge vilchis
Francisco Murillo
Leonardo de los angeles Espinoza Hernandez
David Rosas
Zabdi Servin
Joan Alexander Valerio Rodríguez
Simón Gerardo Flores
Juan Manuel Padilla
¡Hola tú! Teniendo en cuenta que en el anterior playground LeoCode dejó un texto y una imagen para evitar que te comas un spoiler del ejercicio, yo haré lo mismo en este ejercicio adelantandome un poco a LeoCode, así que... Ten tu imagen random, ¡Pero hey! también dejaré la solución al final, así que si no has hecho el ejercicio y no quieres ver la solución aún No leas lo que hay después de la imagen !Image Listo, luego de la advertencia, como quizás sepas (Y si no sabes, lo sabrás pronto 😉😉), para obtener el porcentaje de un valor, puedes realizarlo como de dos maneras fáciles desde mi punto de vista, solo recuerda que un 10% significa un 0.1, un 50% significa un 0.5 y un 5% significa un 0.05, teniendo esto claro vamos con la primera opción:
export function calculateTip(billAmount, tipPercentage) { const newPercentage = tipPercentage / 100; return (billAmount * newPercentage) }
Muy bonito, pero, ¿Y la segunda forma?
(compra * porcentaje) / 100, con esto no necesitas modificar el valor del porcentaje como en la primera solución, es decir, en código sería así:export function calculateTip(billAmount, tipPercentage) { return (billAmount * tipPercentage)/100 }
¡Suerte en tu reto!
Increíble, fuiste mucho más veloz que yo al poner este comentario.
Mil gracias por ayudar 💚
Pille pues la mía parcerito... esta diseñada dependiendo de la cantidad a pagar.
function calculateTip(billAmount) { let tipPercentage; if (billAmount < 100) { tipPercentage = 15; } else if (billAmount < 1000) { tipPercentage = 10; } else { tipPercentage = 5; } return ((tipPercentage / 100) * billAmount); } calculateTip(2000); // 100.0
Creo que me gano otro estudiante, pero de igual manera aquí tienen mi .
🛡️🛡️🛡️Escudo anti spoilers🛡️🛡️🛡️
Este texto que estás viendo en este momento no tiene ningún significado, simplemente es un aporte para poder esconder las soluciones de otros y otras estudiantes de la comunidad. **Nos encanta que dejen sus posibles y distintas soluciones a este problema ** pero no queremos frustrar a quienes vienen después a realizar este ejercicio. . Se estarán topando con este y otros mensajes (de mi o de otros estudiantes) con un proposito en particular, hacer más agradable su experiencia. . Sin más, dejo aquí una imagen aleatoria para después poner la explicación de la solución dada.
Explicación
Esto es álgebra básica, existen multiples formas de calcular el porcentaje pero la que elejimos para este ejercicio fue la más simple agarrar el número que recibimos como porcentaje de la propina y dividirlo entre 100. . De esta manera, al dividir un número menor de 100 entre 100, siempre obtendremos un decimal. . Tomando el ejemplo de la guía, 10 / 100 = 0.1 . Después solo es cuestión de multiplicar el total por ese valor y obtenemos la propina que debemos dar 0.1 * 100 = 10 . Y podemos tener una solución tan coqueta como la siguiente
function calculateTip(billAmount, tipPercentage) { return billAmount * (tipPercentage / 100) }
Pensé que eran necesarias las validaciones que se indica en la guía...como que deben ser númericos y que sean mayores que cero 😅. Igual en mi aporte si las hice.
Lo hermoso de la programación:
Es que no hay una sola respuesta absoluta. Me contenta tener una solución distinta a mis compañeros 💚
Recomendación: No sé si fui el único pero siento que le faltó un poco más de redacción a la explicación.
La explicación de Leo es más clara. Deberían colocar esa 👍
¿Qué le mejorarías a la redacción? Dato curioso, yo redacté el ejercicio y la solución jeje
Todo el feedback es bien recibido 💪
Sabías que...
Big.js es una biblioteca JavaScript que proporciona aritmética decimal de precisión arbitraria. Esta biblioteca permite realizar operaciones matemáticas con números de cualquier tamaño, sin perder precisión debido a la limitación de la aritmética de punto flotante de JavaScript.
La aritmética de punto flotante es el estándar utilizado por la mayoría de los lenguajes de programación, incluido JavaScript. Sin embargo, esta aritmética tiene limitaciones en cuanto a la precisión y el rango de los números que se pueden representar. En algunos casos, esto puede dar lugar a resultados incorrectos debido a errores de redondeo.
Big.js resuelve este problema al proporcionar una implementación de aritmética decimal que puede manejar números con cualquier cantidad de dígitos, sin limitaciones de precisión o rango. Esto es particularmente útil para aplicaciones financieras o científicas que requieren un alto nivel de precisión en los cálculos.
Solución:
/** * @param {number} bill - Bill amount * @param {number} tip - Tip percentage * @returns {number} - Tip amount */ export const calculateTip = (bill, tip) => bill * tip / 100
Estaba viendo las soluciones y me doy cuenta que nadie ha hecho validaciones de los valores que recibe la funcion. Recuerden siempre validar que los valores que ingresan a sus funciones son los valores esperados. En este caso que sean numeros > 0
¡Toda la razón! En este reto en específico no incluimos inputs tan trickis, debido a que las validaciones las veremos más adelante 💪 Pero es una gran recomendación
export function calculateTip(billAmount, tipPercentage) { // Tu código aquí 👈 if (typeof billAmount !== 'number' || typeof tipPercentage !== 'number') { return ('Los parámetros deben ser números'); } if (billAmount < 0 || tipPercentage < 0) { return ('Los parámetros deben ser positivos'); } const tipAmount = billAmount * (tipPercentage / 100); return Math.round(tipAmount * 100) / 100; }
Buenas aca dejo mi aporte, hice una validación al inicio ya que en la consigna decia que los valores iban a ser positivos, por lo tanto valide que estos sena mayores que 0
export function calculateTip(billAmount, tipPercentage) { if (billAmount >= 0 && tipPercentage >= 0) { let propina; propina = billAmount * tipPercentage / 100; return propina; } }
Hola! Voy poniéndome al día con los retos.
Aqui mi respuesta
export function calculateTip(billAmount, tipPercentage) { let tip = billAmount * tipPercentage / 100; return tip }
Por aca les dejo mi apote
Asumiendo que los valores de la cuenta y propina deben ser siempre positivos, decidí agregar al final un mensaje en caso de que el usuario ingrese números negativos en mi respuesta:
export function calculateTip(billAmount, tipPercentage) { if (billAmount >= 0 && tipPercentage >= 0) { return billAmount * (tipPercentage / 100); } else { return "El valor de la cuenta/propina no puede ser negativo."; } }
Me quedó la duda en el reto de en qué momento por código se está pidiendo la entrada de las variables a la función
Las variables entran a la función como parámetros, es decir, cuando se invoca a la función se le dan esos datos para que la función se pueda ejecutar, en este caso, para que se pueda ejecutar la función "calculateTip" es necesario saber el dato de "billAmount" y el de "tipPercentage". Entonces cuando se ejecuta se le dan ambos valores, como en los ejemplos que mencionan.
calculateTip(100,10)
Quiere decir que se le está dando un valor de 100 a billAmount y tipPercentage vale 10. Es decir, la cuenta fué de $100 y se está solicitando un 10% de propina, entonces el resultado es saber cuanto debe de quedar como propina, que en este caso sería $10. En mi caso yo lo resolví de la siguiente forma
export function calculateTip(billAmount, tipPercentage) { let propina = billAmount * tipPercentage / 100 return propina }
Espero que pueda ser de ayuda.
Mi solucion al reto:
Mi ejercicio lo dejé de la siguiente manera por si alguien le sirve, como no nos dan un valor fijo de propina lo único que se hace es que el total de la cuenta lo multiplique por el resultado de la propina dividido en 100 y retorne el resultado.
export funtion calculateTip(billAmount, tipPercentage){
return billAmount * (tipPercentage / 100)
}
Aunque no sé si sería mejor meterlo en una variable const y de ahí poner return
aqui mi aporte
export function calculateTip(billAmount, tipPercentage) {
return La propina es: ${tipPercentage \* billAmount / 100}
}
console.log(calculateTip(1500, 20))
una pregunta, la propina no depende del cliente?🤔
Emmm... pues sí, pero digamos que este era un restaurante exigente :p
Por qué no me dejó guardar el calculo en una variable tip y luego retornar tip??
tip = billAmount * tipPercentage / 100 return tip
Realice el ejercicio de esta manera pero al ejecutar las pruebas me dio error sin embargo en la consola del navegador al poner los parámetros me dio los resultados correctos o de plano me faltó o hice algo mal.
function calculateTip(billAmount, tipPercentage) { const percentaje = (tipPercentage * billAmount)/100; return percentaje; } ```function calculateTip(billAmount, tipPercentage) { const percentaje = (tipPercentage \* billAmount)/100; return percentaje; }
Mi código utilizando propiedades de Matemática. EL valor absoluto de cualquier número, será positivo. Es decir, |-5|=5. Math.abs(-5)-->rta: 5.
export function calculateTip(billAmount, tipPercentage) { // Tu código aquí 👈 var propina = Math.abs(billAmount * (tipPercentage/100)); return propina; }
Dejo mi solución, distinta a todas las que pude ver hasta el momento. Por las dudas me extiendo en el texto para que no se vea a primera vista export function calculateTip(billAmount, tipPercentage) { return (billAmount * tipPercentage) / 100; }