En Elixir hay dos tipos de números diferentes: los enteros y los números de coma flotante.
Los números enteros son números sin parte decimal.
integer = 3
# => 3
Los números de coma flotante son números con uno o más dígitos después del separador decimal. Utilizan el formato de coma 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 estos tipos. Los operadores aritméticos básicos están definidos en el módulo Kernel.
Los números enteros y los de coma flotante se pueden mezclar en una misma expresión aritmética. Si usas un número de coma flotante en una expresión, el resultado también será un número de coma flotante.
2 * 3
# => 6
2 * 3.0
# => 6.0
Sin embargo, al hacer una división, el resultado siempre será un número de coma flotante, incluso si solo se usan números enteros.
6 / 2
# => 3.0
Para convertir un número de coma flotante en uno 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 jefe de proyecto. Tu tarea es proporcionar unas cuantas utilidades que calculen rápidamente tarifas diarias y mensuales, opcionalmente con un descuento dado.
Primero establecemos unas cuantas reglas entre el freelancer y el jefe de proyecto:
A veces, el freelancer ofrece aplicar un descuento sobre su tarifa diaria (por ejemplo, para sus clientes más fieles o para clientes sin ánimo 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 que calcule la tarifa diaria dada 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 coma flotante.
Implementa una función apply_discount que calcule el precio después de aplicar un descuento.
FreelancerRates.apply_discount(150, 10)
# => 135.0
El valor devuelto debe ser siempre un número de coma flotante, sin redondear de ninguna manera.
Implementa una función monthly_rate que calcule 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 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 eso.
FreelancerRates.days_in_budget(20000, 80, 11.0)
# => 35.1
El número de días devuelto debe redondearse hacia abajo a un decimal.
Regístrate en Exercism para aprender y dominar Elixir con 58 conceptos168 ejercicios y mentoría humana real, todo gratis.