Ένας αριθμός κινητής υποδιαστολής είναι ένας αριθμός με μηδέν ή περισσότερα ψηφία μετά την υποδιαστολή. Παραδείγματα είναι τα -2.4, 0.1, 3.14, 16.984025 και 1024.0.
Διαφορετικοί τύποι κινητής υποδιαστολής μπορούν να αποθηκεύσουν διαφορετικό πλήθος ψηφίων μετά την υποδιαστολή. Αυτό ονομάζεται ακρίβειά τους. Αυτό σημαίνει ότι αν προσπαθήσεις να αποθηκεύσεις το PI σε ένα single, θα αποθηκευτούν μόνο τα πρώτα 6 έως 9 ψηφία (με το τελευταίο ψηφίο στρογγυλοποιημένο).
Οι αριθμοί κινητής υποδιαστολής στην Clojure διαβάζονται ως Double· με επίθημα M διαβάζονται ως BigDecimal.
Double: 8 byte (ακρίβεια ~15-17 ψηφίων). Είναι ο πιο συνηθισμένος τύπος. Γράφεται ως 2.45.BigDecimal: Ακέραια τιμή χωρίς κλιμάκωση, αυθαίρετης ακρίβειας, και κλίμακα ακεραίου 32 bit. Γράφεται ως 2.45M.Σε αυτή την άσκηση θα δουλέψεις με λογαριασμούς ταμιευτηρίου. Κάθε χρόνο, το υπόλοιπο του λογαριασμού ταμιευτηρίου σου ενημερώνεται με βάση το επιτόκιό του. Το επιτόκιο που σου δίνει η τράπεζά σου εξαρτάται από το ποσό των χρημάτων στον λογαριασμό σου (το υπόλοιπό του):
1000 δολάρια.1000 δολάρια και μικρότερο από 5000 δολάρια.5000 δολάρια.Κάθε χρόνο, πριν ενημερωθεί το υπόλοιπο του λογαριασμού ταμιευτηρίου σου, η κυβέρνηση σου επιτρέπει να δωρίσεις ένα ποσοστό των χρημάτων σου σε φιλανθρωπικά ιδρύματα, αφορολόγητα. Επειδή είσαι καλός άνθρωπος, αν το υπόλοιπό σου είναι θετικό στο τέλος του χρόνου, δωρίζεις το διπλάσιο αυτού του ποσού σε φιλανθρωπικά ιδρύματα, στρογγυλοποιημένο προς τα κάτω στο πλησιέστερο ακέραιο δολάριο.
Έχεις τρεις εργασίες, καθεμία από τις οποίες θα ασχοληθεί με το υπόλοιπό σου και το επιτόκιό του.
Υλοποίησε τη συνάρτηση interest-rate για να υπολογίσεις το επιτόκιο με βάση το συγκεκριμένο υπόλοιπο:
(interest-rate 200.75M)
;;=> 0.5
Σημείωσε ότι η τιμή που επιστρέφεται είναι Double.
Υλοποίησε τη συνάρτηση annual-balance-update για να υπολογίσεις την ετήσια ενημέρωση του υπολοίπου, λαμβάνοντας υπόψη το επιτόκιο:
(annual-balance-update 200.75M)
;;=> 201.75375M
Σημείωσε ότι η τιμή που επιστρέφεται είναι BigDecimal.
Υλοποίησε τη συνάρτηση amount-to-donate για να υπολογίσεις πόσα χρήματα θα δωρίσεις σε φιλανθρωπικά ιδρύματα με βάση το υπόλοιπο και το αφορολόγητο ποσοστό που επιτρέπει η κυβέρνηση:
(def balance 550.5M)
(def tax-free-percentage 2.5)
(amount-to-donate balance tax-free-percentage)
;;=> 27
Σημείωσε ότι η τιμή που επιστρέφεται είναι int.
Γράψου στο Exercism για να μάθεις και να κατακτήσεις Clojure με 12 έννοιες105 ασκήσεις και πραγματική καθοδήγηση από ανθρώπους, όλα δωρεάν.