Στην Elixir υπάρχουν δύο διαφορετικά είδη αριθμών: οι ακέραιοι και τα float.
integer = 3
# => 3
Τα float είναι αριθμοί με ένα ή περισσότερα ψηφία μετά την υποδιαστολή. Χρησιμοποιούν τη μορφή κινητής υποδιαστολής διπλής ακρίβειας 64-bit.
float = 3.45
# => 3.45
Στα module Integer και Float μπορείς να βρεις μερικές χρήσιμες συναρτήσεις για να δουλέψεις με αυτούς τους τύπους. Οι βασικοί αριθμητικοί τελεστές ορίζονται στο module Kernel.
Οι ακέραιοι και τα float μπορούν να αναμειχθούν σε μια αριθμητική παράσταση. Η χρήση ενός float σε μια παράσταση εξασφαλίζει ότι το αποτέλεσμα θα είναι κι αυτό float.
2 * 3
# => 6
2 * 3.0
# => 6.0
Ωστόσο, όταν κάνεις διαίρεση, το αποτέλεσμα θα είναι πάντα float, ακόμα κι αν χρησιμοποιείς μόνο ακέραιους.
6 / 2
# => 3.0
Για να μετατρέψεις ένα float σε ακέραιο, μπορείς να απορρίψεις το δεκαδικό μέρος με trunc/1.
Σε αυτή την άσκηση, θα γράψεις κώδικα για να βοηθήσεις έναν freelancer να συνεννοηθεί με έναν project manager. Η αποστολή σου είναι να παρέχεις μερικά βοηθητικά εργαλεία για να υπολογίζεις γρήγορα ημερήσιες και μηνιαίες χρεώσεις, προαιρετικά με μια δεδομένη έκπτωση.
Πρώτα ορίζουμε μερικούς κανόνες ανάμεσα στον freelancer και στον project manager:
Κάποιες φορές, ο freelancer προσφέρει έκπτωση στην ημερήσια χρέωσή του (για παράδειγμα, για τους πιο πιστούς πελάτες του ή για μη κερδοσκοπικούς πελάτες).
Οι εκπτώσεις μοντελοποιούνται ως δεκαδικοί αριθμοί που αντιπροσωπεύουν ποσοστά, για παράδειγμα 25.0 (25%).
Υλοποίησε μια συνάρτηση με όνομα daily_rate που υπολογίζει την ημερήσια χρέωση με δεδομένη την ωριαία χρέωση ως παράμετρο.
Το συμβόλαιο ορίζει ότι μια ημέρα έχει 8 χρεώσιμες ώρες.
FreelancerRates.daily_rate(60)
# => 480.0
Η ημερήσια χρέωση που επιστρέφεται πρέπει να είναι float.
Υλοποίησε μια συνάρτηση apply_discount που υπολογίζει την τιμή μετά από έκπτωση.
FreelancerRates.apply_discount(150, 10)
# => 135.0
Η τιμή που επιστρέφεται πρέπει να είναι πάντα float, χωρίς καμία στρογγυλοποίηση.
Υλοποίησε μια συνάρτηση monthly_rate που υπολογίζει τη μηνιαία χρέωση με έκπτωση.
Παίρνει δύο παραμέτρους, μια ωριαία χρέωση και την έκπτωση σε ποσοστό.
FreelancerRates.monthly_rate(77, 10.5)
# => 12130
Η μηνιαία χρέωση που επιστρέφεται πρέπει να στρογγυλοποιείται προς τα πάνω (να παίρνεις την οροφή) στον πλησιέστερο ακέραιο.
Υλοποίησε μια συνάρτηση days_in_budget που παίρνει έναν προϋπολογισμό, μια ωριαία χρέωση και μια έκπτωση, και υπολογίζει πόσες πλήρεις εργάσιμες ημέρες καλύπτει.
FreelancerRates.days_in_budget(20000, 80, 11.0)
# => 35.1
Ο αριθμός των εργάσιμων ημερών που επιστρέφεται πρέπει να στρογγυλοποιείται προς τα κάτω (να παίρνεις το δάπεδο) σε ένα δεκαδικό ψηφίο.
Γράψου στο Exercism για να μάθεις και να κατακτήσεις Elixir με 58 έννοιες168 ασκήσεις και πραγματική καθοδήγηση από ανθρώπους, όλα δωρεάν.