Ακρίβεια υπολογισμού του LibreOffice

Πρόβλημα εγγενούς ακρίβειας

Το LibreOffice Calc, όπως και τα περισσότερα άλλα λογισμικά υπολογιστικών φύλλων, χρησιμοποιεί δυνατότητες μαθηματικών κινητής υποδιαστολής που είναι διαθέσιμες στο υλικό. Δεδομένου ότι το μεγαλύτερο μέρος του σύγχρονου υλικού χρησιμοποιεί δυαδική αριθμητική κινητής υποδιαστολής με περιορισμένη ακρίβεια που ορίζεται στο πρότυπο IEEE 754, πολλοί δεκαδικοί αριθμοί - συμπεριλαμβανομένου του 0,1 - δεν μπορούν να αναπαρασταθούν με ακρίβεια στο LibreOffice Calc (το οποίο χρησιμοποιεί εσωτερικά αριθμούς διπλής ακρίβειας 64 bit).

Οι υπολογισμοί με αυτούς τους αριθμούς αναγκαστικά έχουν ως αποτέλεσμα σφάλματα στρογγυλοποίησης και αυτοί συσσωρεύονται με κάθε υπολογισμό.

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

Παράδειγμα με αριθμούς:

A

1

31000.99

2

32000.12

3

=A1-A2


Αυτό θα έχει ως αποτέλεσμα -999,129999999997 στο A3, αντί για το αναμενόμενο -999,13 (ίσως χρειαστεί να αυξήσετε τα εμφανιζόμενα δεκαδικά ψηφία σε μορφή κελιού για να το δείτε).

Παρακαλούμε, υποστηρίξτε μας!