¡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:
Multiplicando el valor del cuál quieres obtener con el porcentaje pero no en el valor de porcentaje, sino con el valor decimal, es decir, si es 55%, lo multiplicas por 0.55. ¡Listo! ¿Pero como se haría con código? Podrías simplemente hacer una conversión de un dato que converta un 50 a un 0.50, ejemplo, 50 dividido en 100, conviertes el dato a decimal, siendo un 0.50, en código, sería así:
Sencillito, solo aplica esta formula (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í:
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
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
*/exportconstcalculateTip=(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
exportfunctioncalculateTip(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);returnMath.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
exportfunctioncalculateTip(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:
exportfunctioncalculateTip(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.
Ejemplo 1:
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
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.
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 /100return 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.
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.
exportfunctioncalculateTip(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;
}