JAVA - ΕΝΟΤΗΤΑ 6 – Floating-Point Data Types in Java 11
Εκτός από τους ακέραιους αριθμούς μπορούμε να ορίσουμε μια Java μεταβλητή να δέχεται και δεκαδικούς αριθμούς. Δύο από τα οκτώ primitive types χρησιμοποιούνται για δεκαδικούς αριθμούς: float και double.
Στην προηγούμενη
ενότητα είχαμε περιγράψει ότι η default
συμπεριφορά της Java με
τους ακέραιους αριθμούς ήταν να
προσπαθήσει να τους μετατρέψει όλους
σε int εκτός και αν βάλουμε
το L στον τέλος του αριθμού
χαρακτηρίζοντας τον σαν Long.
Στους δεκαδικούς η default
συμπεριφορά είναι το double
data type. Αν θέλουμε να ορίσουμε έναν
αριθμό να είναι float εκτός
από το float data type μπροστά
από το όνομα της μεταβλητής πρέπει να
προσθέσουμε και ένα F στο
τέλος του αριθμού. Γενικότερα το double
είναι εκείνο που χρησιμοποιούμε
πιο πολύ αφού έτσι και αλλιώς όλες οι
μαθηματικές βιβλιοθήκες της Java
χρησιμοποιούν και επιστρέφουν
double αριθμούς.
Ας δούμε όμως
ένα παράδειγμα στο οποίο μπορούμε να
δούμε ξεκάθαρα την χρήση των δύο αυτών
data types και που πρέπει να
προσέχουμε όταν τα χρησιμοποιούμε σε
αριθμητικές πράξεις.
Στο πιο πάνω πρόγραμμα,
αν και δεν παρουσιάζει κανένα λάθος όσο
αφορά την Java το αποτέλεσμα
όμως είναι λάθος. Ας το αναλύσουμε γραμμή
προς γραμμή και θα δούμε πως μπορούμε
να το διορθώσουμε.
Ορίζουμε
εξ αρχής δύο μεταβλητές pi και
f με την pi να
είναι double και την f
να είναι float. Παρατηρήστε
το F στο τέλος του αριθμού
2.7.
Αμέσως
μετά τον ορισμό των μεταβλητών, απλά
ζητάμε να δούμε τις τιμές που τους έχουμε
αναθέσει στο default output.
Στην
συνέχεια, ορίζουμε δύο int
μεταβλητές την n και
την d με τιμές 15 και 4
αντίστοιχα. Και στο επόμενο βήμα εκτελούμε
την διαίρεση 15/4 και ζητάμε να δούμε το
αποτέλεσμα στο terminal. Όμως
παρατηρούμε ότι το αποτέλεσμα είναι
λάθος. Τι έγινε? Η απάντηση είναι απλή:
Η διαίρεση μεταξύ δύο int
αριθμών μας δίνει αποτέλεσμα int
δηλαδή 3. Επειδή όμως η μεταβλητή f
έχει οριστεί σαν float, η
Java πριν αναθέσει την int
τιμή στην μεταβλητή f την
μετατρέπει σε float. Οπότε
το 3 μετατρέπεται σε 3.0. Για να λάβουμε
το σωστό αποτέλεσμα πρέπει πολύ απλά
να μετατρέψουμε τον ένα από τους δύο
int σε float. Τότε
αυτόματα ο δεύτερο int θα
μετατραπεί σε float και
αυτός και η διαίρεση θα μας δώσει το
σωστό αποτέλεσμα όπως μας δείχνει το
πιο κάτω παράδειγμα.
Στις δύο τελευταίες
γραμμές του κώδικα απλά εκτελούμε την
πράξη του πολλαπλασιασμού για να δούμε
πως, για άλλη μια φορά, o int
μετατράπηκε σε double και
μετά έγινε η πράξη του πολλαπλασιασμού
που μας δίνει το σωστό αποτέλεσμα.
Μιχάλης
Κασάπογλου