En Elixir hay dos tipos diferentes de números: los enteros y los números de punto flotante.
Los enteros son números sin parte decimal.
integer = 3
# => 3
Un número de punto flotante es un número con uno o más dígitos detrás del separador decimal. Usan el formato de punto flotante de doble precisión de 64 bits.
float = 3.45
# => 3.45
En los módulos Integer y Float puedes encontrar algunas funciones útiles para trabajar con esos tipos. Los operadores aritméticos básicos se definen en el módulo Kernel.
Los enteros y los números de punto flotante se pueden mezclar en una misma expresión aritmética. Usar un número de punto flotante en una expresión asegura que el resultado también sea un número de punto flotante.
2 * 3
# => 6
2 * 3.0
# => 6.0
Sin embargo, al hacer una división, el resultado siempre será un número de punto flotante, incluso si solo se usan enteros.
6 / 2
# => 3.0
Para convertir un número de punto flotante a un entero, puedes descartar la parte decimal con trunc/1.
En este ejercicio vas a escribir código para ayudar a un freelancer a comunicarse con un gerente de proyecto. Tu tarea es proporcionar algunas utilidades para calcular rápidamente tarifas diarias y mensuales, opcionalmente con un descuento dado.
Primero establecemos algunas reglas entre el freelancer y el gerente de proyecto:
A veces, el freelancer ofrece aplicar un descuento sobre su tarifa diaria (por ejemplo, para sus clientes más leales o clientes sin fines de lucro).
Los descuentos se modelan como números fraccionarios que representan porcentajes, por ejemplo, 25.0 (25%).
Implementa una función llamada daily_rate para calcular la tarifa diaria a partir de una tarifa por hora como parámetro.
El contrato define que un día tiene 8 horas facturables.
FreelancerRates.daily_rate(60)
# => 480.0
La tarifa diaria devuelta debe ser un número de punto flotante.
Implementa una función apply_discount para calcular el precio después de aplicar un descuento.
FreelancerRates.apply_discount(150, 10)
# => 135.0
El valor devuelto siempre debe ser un número de punto flotante, sin redondear de ninguna manera.
Implementa una función monthly_rate para calcular la tarifa mensual con descuento.
Recibe dos parámetros: una tarifa por hora y el descuento en porcentaje.
FreelancerRates.monthly_rate(77, 10.5)
# => 12130
La tarifa mensual devuelta debe redondearse hacia arriba (tomar el techo) al entero más cercano.
Implementa una función days_in_budget que reciba un presupuesto, una tarifa por hora y un descuento, y calcule cuántos días completos de trabajo cubre.
FreelancerRates.days_in_budget(20000, 80, 11.0)
# => 35.1
La cantidad de días devuelta debe redondearse hacia abajo (tomar el piso) con un decimal.
Regístrate en Exercism para aprender y dominar Elixir con 58 conceptos168 ejercicios y mentoría humana real, todo gratis.