2.2.4. Τύποι πραγματικών αριθμών

Τύποι πραγματικών αριθμών

Οι πραγματικοί αριθμοί είναι οι αριθμοί που διαθέτουν κλασματικό μέρος και εκφράζονται συνήθως στις ακόλουθες μορφές:

 

Τύποι πραγματικών αριθμών
Εικόνα 5. Τύποι πραγματικών αριθμών

 

Διαφήμιση

 

Η γλώσσα C διαθέτει δύο τύπους για αναπαράσταση πραγματικών αριθμών. Τον τύπο float για αριθμούς κινητής υποδιαστολής απλής ακρίβειας και τον τύπο double για αριθμούς κινητής υποδιαστολής διπλής ακρίβειας.

Η δήλωση της μεταβλητής float ή double ακολουθεί τον εξής φορμαλισμό:

 

 

float όνομα_μεταβλητής;

 

Παράδειγμα:

 

float plank=6.63e-34;

 

Η χρήση του προσδιοριστή long πριν από τον τύπο double χρησιμοποιείται για δήλωση μεταβλητής κινητής υποδιαστολής εκτεταμένης ακρίβειας, π.χ.

 

Διαφήμιση

 

long double plank;

 

Η εισαγωγή τιμών στις μεταβλητές κινητής υποδιαστολής γίνεται με χρήση της συνάρτησης scanf και του προσδιοριστή %f (float). Η πρόταση

 

scanf( "%f", &num );

 

διαβάζει από το πληκτρολόγιο έναν πραγματικό αριθμό και τον αποδίδει στη μεταβλητή num.

Η εκτύπωση πραγματικών μεταβλητών γίνεται με χρήση της συνάρτησης printf και των προσδιοριστών %f για εμφάνιση σε δεκαδική μορφή, %e για εμφάνιση σε εκθετική μορφή, και %g για να ανατεθεί στο σύστημα να επιλέξει μεταξύ των δύο προηγουμένων, με προτεραιότητα στη μορφή με το μικρότερο μέγεθος.

Σε ό,τι αφορά το χώρο που καταλαμβάνουν στη μνήμη, ως συνηθισμένα μεγέθη αναφέρονται για τους μεν float τα 32 bits, για τους δε double τα 64 bits. Θα πρέπει να σημειωθεί ότι, σε αντιδιαστολή με τους ακέραιους αριθμούς, δεν υπάρχει αντιστοιχία ένα προς ένα ανάμεσα στους πραγματικούς αριθμούς και στις απεικονίσεις τους στις γλώσσες προγραμματισμού.

 

Διαφήμιση

 

Οι αριθμοί που αντιστοιχούν στους πραγματικούς αριθμούς είναι προσεγγίσεις αυτών και ονομάζονται αριθμοί μηχανής, εξαιτίας της ανάγκης να απεικονισθούν με πεπερασμένο αριθμό ψηφίων πραγματικοί αριθμοί που θεωρητικά μπορούν να περιέχουν άπειρο αριθμό κλασματικών ψηφίων. Σε μία μεταβλητή τύπου float των 32 bits τα 8 bits χρησιμοποιούνται για τον εκθέτη, ένα για το πρόσημο και τα υπόλοιπα 23 για το κλασματικό μέρος.

Ο οκταψήφιος δυαδικός εκθέτης αντιστοιχεί σε 28 = 256 δυνατές τιμές. Από αυτές οι 127 δίνονται σε αρνητικούς ακέραιους και οι υπόλοιπες 129 σε θετικούς, με την ακόλουθη αντιστοιχία δυαδικής και δεκαδικής τιμής:

 

emin = (00000000)2 → emin = (−127)10

emax = (11111111)2 → emax = (128)10

 

Με βάση τα παραπάνω, η μέγιστη απόλυτη τιμή πραγματικών αριθμών που μπορεί να επιτευχθεί με μεταβλητή τύπου float των 32 bits είναι (βλ. Παράδειγμα 2.3). Στους αριθμούς διπλής ακρίβειας δεσμεύονται 64 bits, εκ των οποίων τα 11 δίνονται στον εκθέτη, ένα στο πρόσημο και 52 στο κλασματικό μέρος.

Παρατηρήσεις:

Όπως σημειώθηκε στους ακέραιους, έτσι και στους πραγματικούς υπάρχει η δυνατότητα να καθορισθεί ο αριθμός των ψηφίων που θα εκτυπωθούν, τοποθετώντας τον επιθυμητό αριθμό ανάμεσα στο % και το f. Μάλιστα ο αριθμός θα είναι της μορφής a.b, με το a να δηλώνει το συνολικό αριθμό των ψηφίων – συμπεριλαμβανομένου του πρόσημου – και το b να δηλώνει τον αριθμό των δεκαδικών ψηφίων. Οι προτάσεις

 

float num = 46.37; 
printf( "num=%8.4f, num=%12.1f\n", num,num );

 

θα τυπώσουν

 

num = 46.3700,

num = 46.4

 

Διαφήμιση

 

Είναι φανερό ότι στην περίπτωση που ο αριθμός των δεκαδικών ψηφίων που ζητούνται είναι μικρότερος από τον απαιτούμενο γίνεται στρογγυλοποίηση (το 37 στρογγυλοποιήθηκε στο 40 και παρελήφθη το 0).

Πραγματικοί αριθμοί όπως οι

0.12

45.68

9e-5

24e09

0.0034e-08

 

όταν εμφανίζονται στον πηγαίο κώδικα αποτελούν τις πραγματικές σταθερές. Θεωρούνται από το μεταγλωττιστή ως double και δεσμεύουν τον αντίστοιχο χώρο.

 

Διαφήμιση

Συνημμένα1

  • Τύποι πραγματικών αριθμών
SEE ALL Add a note
YOU
Add your Comment
 
error: Το περιεχόμενο προστατεύεται!!
X