Περιγραφή

Πρόκειται για έναν τύπο δεδομένων που χρησιμοποιείται για τους αριθμούς της κινητής υποδιαστολής, δηλαδή είναι ένας αριθμός που έχει υποδιαστολή. Οι αριθμοί της κινητής υποδιαστολής χρησιμοποιούνται συχνά για να προσεγγίσουν τις αναλογικές και τις συνεχείς τιμές, διότι διαθέτουν μεγαλύτερη ανάλυση σε σχέση με τους ακέραιους αριθμούς. Οι αριθμοί της κινητής υποδιαστολής μπορεί να είναι τόσο μεγάλοι όσο το 3.4028235E + 38 και τόσο μικροί όσο το -3.4028235E + 38. Αυτοί αποθηκεύονται ως τιμές των 32 bits (4 bytes) πληροφοριών.

Οι δεκαδικοί αριθμοί διαθέτουν μόλις 6-7 δεκαδικά ψηφία ακρίβειας. Αυτό σημαίνει ο συνολικός αριθμός των ψηφίων και όχι ο αριθμός στα δεξιά της υποδιαστολής. Σε αντίθεση με τις άλλες πλατφόρμες, όπου μπορείτε να λάβετε περισσότερη ακρίβεια (π.χ. μέχρι τα 15 ψηφία) χρησιμοποιώντας έναν double, ωστόσο στο Arduino το double έχει ακριβώς το ίδιο μέγεθος με τον δεκαδικό.

Οι αριθμοί της κινητής υποδιαστολής δεν είναι ακριβείς και έτσι μπορεί να δώσουν παράξενα αποτελέσματα όταν συγκρίνονται μεταξύ τους. Για παράδειγμα η διαίρεση 6,0 / 3,0 δεν μπορεί να ισούται με το 2,0. Αντί αυτού, θα πρέπει να ελέγξετε ότι η απόλυτη τιμή της διαφοράς μεταξύ των αριθμών είναι μικρότερη από κάποιο μικρό αριθμό.

Επίσης, στην εκτέλεση των υπολογισμών, να έχετε υπόψη σας ότι τα μαθηματικά με τις κινητές υποδιαστολές είναι πολύ πιο αργά, από ότι τα μαθηματικά με τους ακέραιους αριθμούς. Έτσι θα πρέπει να αποφεύγεται η χρήση τους, εάν για παράδειγμα ένας βρόχος πρέπει να εκτελεστεί στην μέγιστη ταχύτητά του για μια κρίσιμη συνάρτηση χρονισμού. Συχνά οι προγραμματιστές πηγαίνουν σε κάποια συγκεκριμένα μεγέθη, έτσι ώστε να μετατρέψουν τους υπολογισμούς της κινητής υποδιαστολής, σε μαθηματικά με τους ακέραιους αριθμούς για να αυξήσουν την ταχύτητα εκτέλεσης.

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

Παραδείγματα

    float myfloat;
    float sensorCalbrate = 1.117

Σύνταξη

float var = val;

  var : το όνομα της δεκαδικής μεταβλητής σας.
  val : η τιμή που εκχωρείτε σε αυτή τη μεταβλητή.

Παράδειγμα κώδικα

   int x;
   int y;
   float z;

   x = 1;
   y = x / 2;            // y now contains 0, ints can't hold fractions
   z = (float)x / 2.0;   // z now contains .5 (you have to use 2.0, not 2)

Επιστροφή στην σελίδα Παραπομπές Γλώσσας