====== Κάποιες τιμές στον υπολογιστή δεν παριστάνονται επακριβώς ====== ή ====== Η ceil & η floor δίνουν απρόσμενα αποτελέσματα ====== Η αναπαράσταση των πραγματικών αριθμών στον υπολογιστή, επειδή γίνεται με πεπερασμένο πλήθος ψηφίων, προφανώς δεν καλύπτει την πλειονότητα των πραγματικών τιμών. __Αυτό έχει σαν συνέπεια οι τιμές στον υπολογιστή να παριστάνονται σχεδόν πάντα στρογγυλευμένες__ προς την καταλληλότερη εφικτή αναπαράσταση. Αυτό έχει σαν αποτέλεσμα να εισάγεται ένα σφάλμα που ονομάζεται **σφάλμα στρογγύλευσης** (θα μάθετε σχετικά στο κομμάτι της θεωρίας, αλλά μπορείτε να δείτε και ένα άρθρο [[https://en.wikipedia.org/wiki/Round-off_error|εδώ]] - δεν είναι όμως της ώρας). Αυτό έχει σαν αποτέλεσμα όταν εκτυπώνουμε τις τιμές με την ''printf'' με αρκετά ψηφία να βλέπουμε περιπτώσεις όπως παρακάτω. printf("%.16lf\n", 10.2); // 10.1999999999999990 printf("%.16lf\n", 2.2); // 2.2000000000000002 => ceil = 3 printf("%.16lf\n", 1.8); // 1.8000000000000000 printf("%.16lf\n", 8. / 4.); // 2.0000000000000000 printf("%.16lf\n", (10.2 - 2.2) / (2.2 + 1.8)); // 1.9999999999999998 => floor = 1 Και όπως φαίνεται αυτό έχει και σαν αποτέλεσμα, εάν πάνω σε αυτές τις τιμές εφαρμοστούν οι συναρτήσεις ''floor'' ή ''ceil'' να προκύψουν απρόσμενες τιμές. Αυτό όμως είναι ένα εγγενές πρόβλημα στους υπολογιστές, το οποίο όμως ξεφεύγει από τα πλαίσια της ροής της "Εισαγωγής στον προγραμματισμό" του μαθήματός μας.