Ένας αριθμός κινητής υποδιαστολής είναι ένας αριθμός με μηδέν ή περισσότερα ψηφία μετά την υποδιαστολή.
Παραδείγματα είναι οι -2.4, 0.1, 3.14, 5., 16.984025 και 1024.0.
Διαφορετικοί τύποι κινητής υποδιαστολής μπορούν να αποθηκεύσουν διαφορετικό πλήθος ψηφίων μετά την υποδιαστολή· αυτό ονομάζεται ακρίβειά τους.
Η Go έχει δύο τύπους κινητής υποδιαστολής:
float32: 32 bit (ακρίβεια ~6-9 ψηφίων).float64: 64 bit (ακρίβεια ~15-17 ψηφίων).
Αυτός είναι ο προεπιλεγμένος τύπος κινητής υποδιαστολής.Όπως φαίνεται, και οι δύο τύποι μπορούν να αποθηκεύσουν διαφορετικό πλήθος ψηφίων.
Αυτό σημαίνει ότι αν προσπαθήσεις να αποθηκεύσεις το π σε έναν float32, θα αποθηκευτούν μόνο τα πρώτα 6 έως 9 ψηφία (με το τελευταίο ψηφίο στρογγυλοποιημένο).
Από προεπιλογή, η Go χρησιμοποιεί float64 για τους αριθμούς κινητής υποδιαστολής, εκτός αν ο αριθμός κινητής υποδιαστολής:
float32, ήfloat32, ήfloat32().Το [πακέτο math] περιέχει πολλές χρήσιμες μαθηματικές συναρτήσεις.
Σε αυτή την άσκηση θα δουλέψεις με λογαριασμούς ταμιευτηρίου. Κάθε χρόνο, το υπόλοιπο του λογαριασμού ταμιευτηρίου σου ενημερώνεται με βάση το επιτόκιό του. Το επιτόκιο που σου δίνει η τράπεζά σου εξαρτάται από το ποσό των χρημάτων στον λογαριασμό σου (το υπόλοιπό του):
0 δολάρια (το υπόλοιπο γίνεται πιο αρνητικό).0 δολάρια και μικρότερο από 1000 δολάρια.1000 δολάρια και μικρότερο από 5000 δολάρια.5000 δολάρια.Έχεις τέσσερις εργασίες, καθεμία από τις οποίες ασχολείται με το υπόλοιπό σου και το επιτόκιό του.
Υλοποίησε τη συνάρτηση InterestRate() για να υπολογίσεις το επιτόκιο με βάση το καθορισμένο υπόλοιπο:
InterestRate(200.75)
// => 0.5
Σημείωσε ότι η τιμή επιστροφής είναι float32.
Υλοποίησε τη συνάρτηση Interest() για να υπολογίσεις τον τόκο με βάση το καθορισμένο υπόλοιπο:
Interest(200.75)
// => 1.003750
Σημείωσε ότι η τιμή επιστροφής είναι float64.
Υλοποίησε τη συνάρτηση AnnualBalanceUpdate() για να υπολογίσεις την ετήσια ενημέρωση του υπολοίπου, λαμβάνοντας υπόψη το επιτόκιο:
AnnualBalanceUpdate(200.75)
// => 201.75375
Σημείωσε ότι η τιμή επιστροφής είναι float64.
Υλοποίησε τη συνάρτηση YearsBeforeDesiredBalance() για να υπολογίσεις τον ελάχιστο αριθμό ετών που απαιτούνται για να φτάσεις στο επιθυμητό υπόλοιπο, λαμβάνοντας υπόψη ότι κάθε χρόνο ο τόκος προστίθεται στο υπόλοιπο.
Αυτό σημαίνει ότι το υπόλοιπο μετά από ένα χρόνο είναι: αρχικό υπόλοιπο + τόκος για το αρχικό υπόλοιπο.
Το υπόλοιπο μετά από δύο χρόνια είναι: υπόλοιπο μετά από ένα χρόνο + τόκος για το υπόλοιπο μετά από ένα χρόνο.
Και ούτω καθεξής, μέχρι το υπόλοιπο του τρέχοντος έτους να είναι μεγαλύτερο ή ίσο με το υπόλοιπο-στόχο.
balance := 200.75
targetBalance := 214.88
YearsBeforeDesiredBalance(balance, targetBalance)
// => 14
Σημείωσε ότι η τιμή επιστροφής είναι int.
Γράψου στο Exercism για να μάθεις και να κατακτήσεις Go με 34 έννοιες166 ασκήσεις και πραγματική καθοδήγηση από ανθρώπους, όλα δωρεάν.