Tracks
/
Elixir
Elixir
/
Übungen
/
Freelancer-Sätze
Freelancer-Sätze

Freelancer-Sätze

Lernübung

Einführung

Ganzzahlen

In Elixir gibt es zwei verschiedene Arten von Zahlen: Ganzzahlen und Gleitkommazahlen.

Ganzzahlen sind Zahlen ohne Nachkommateil.

integer = 3
# => 3

Gleitkommazahlen

Gleitkommazahlen sind Zahlen mit einer oder mehreren Ziffern hinter dem Dezimaltrennzeichen. Sie verwenden das 64-Bit-Gleitkommaformat mit doppelter Genauigkeit.

float = 3.45
# => 3.45

Mit Zahlen arbeiten

In den Modulen Integer und Float findest du nützliche Funktionen für die Arbeit mit diesen Typen. Die grundlegenden arithmetischen Operatoren sind im Modul Kernel definiert.

Umwandlung

Ganzzahlen und Gleitkommazahlen können in einem einzigen arithmetischen Ausdruck gemischt werden. Sobald eine Gleitkommazahl in einem Ausdruck vorkommt, ist auch das Ergebnis eine Gleitkommazahl.

2 * 3
# => 6

2 * 3.0
# => 6.0

Bei einer Division ist das Ergebnis jedoch immer eine Gleitkommazahl, selbst wenn nur Ganzzahlen verwendet werden.

6 / 2
# => 3.0

Um eine Gleitkommazahl in eine Ganzzahl umzuwandeln, kannst du den Dezimalteil mit trunc/1 verwerfen.

Anleitung

In dieser Übung schreibst du Code, der einem Freelancer dabei hilft, mit der Projektleitung zu kommunizieren. Deine Aufgabe ist es, ein paar Hilfsfunktionen bereitzustellen, mit denen sich Tages- und Monatssätze schnell berechnen lassen, optional mit einem gegebenen Rabatt.

Zuerst legen wir ein paar Regeln zwischen dem Freelancer und der Projektleitung fest:

  • Der Tagessatz ist das 8-Fache des Stundensatzes.
  • Ein Monat hat 22 abrechenbare Tage.

Manchmal bietet der Freelancer an, einen Rabatt auf seinen Tagessatz zu gewähren (zum Beispiel für seine treuesten Kunden oder für gemeinnützige Kunden).

Rabatte werden als Bruchzahlen modelliert, die Prozentwerte darstellen, zum Beispiel 25.0 (25 %).

1. Berechne den Tagessatz aus einem Stundensatz

Implementiere eine Funktion namens daily_rate, die den Tagessatz aus einem Stundensatz als Parameter berechnet. Der Vertrag legt fest, dass ein Tag 8 abrechenbare Stunden hat.

FreelancerRates.daily_rate(60)
# => 480.0

Der zurückgegebene Tagessatz sollte eine Gleitkommazahl sein.

2. Berechne einen rabattierten Preis

Implementiere eine Funktion apply_discount, die den Preis nach einem Rabatt berechnet.

FreelancerRates.apply_discount(150, 10)
# => 135.0

Der Rückgabewert sollte immer eine Gleitkommazahl sein und in keiner Weise gerundet werden.

3. Berechne den Monatssatz aus einem Stundensatz und einem Rabatt

Implementiere eine Funktion monthly_rate, die den rabattierten Monatssatz berechnet. Sie nimmt zwei Parameter entgegen: einen Stundensatz und den Rabatt in Prozent.

FreelancerRates.monthly_rate(77, 10.5)
# => 12130

Der zurückgegebene Monatssatz sollte auf die nächste Ganzzahl aufgerundet werden.

4. Berechne die Anzahl der vollständigen Arbeitstage aus einem Budget, einem Stundensatz und einem Rabatt

Implementiere eine Funktion days_in_budget, die ein Budget, einen Stundensatz und einen Rabatt entgegennimmt und berechnet, wie viele vollständige Arbeitstage damit abgedeckt sind.

FreelancerRates.days_in_budget(20000, 80, 11.0)
# => 35.1

Die zurückgegebene Anzahl an Tagen sollte auf eine Nachkommastelle abgerundet werden.

Über GitHub bearbeiten Der Link öffnet sich in einem neuen Fenster oder Tab
Elixir Exercism

Bereit, mit Freelancer-Sätze zu starten?

Melde dich bei Exercism an, um Elixir mit 58 Konzepte168 Übungen und echtem menschlichen Mentoring zu lernen und zu meistern, alles kostenlos.