Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

Ανακριβή αποτελέσματα σε Double

Îåêßíçóå áðü ôï ìÝëïò akakos. Τελευταία δημοσίευση από το μέλος Παναγιώτης Καναβός στις 03-09-2008, 16:41. Υπάρχουν 1 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  03-09-2008, 16:00 44459

    Ανακριβή αποτελέσματα σε Double

    Γιατί το αποτέλεσμα του παρακάτω βγαίνει λάθος;
      Dim dbl As Double
            dbl = 2.4 - 1.1 (αποτέλεσμα 1.2999999999999999999)
            dbl -= 1.3
    Αν τώρα πούμε
    if dbl <0 Then ...Την πατήσαμε γιατί το dbl είναι μικρότερο του 0.
  •  03-09-2008, 16:41 44460 σε απάντηση της 44459

    Απ: Ανακριβή αποτελέσματα σε Double

    Γιατί ... δεν είναι λάθος! Οι floating point αριθμοί δεν έχουν εγγυημένη ακρίβεια καθώς αναπαριστούν κάθε αριθμό ως γινόμενο ενός πολλαπλασιαστή με μία δύναμη του 10. Αν δεν υπάρχουν αρκετά bits για να παρουσιαστεί ο πολλαπλασιαστής, θα εμφανιστούν τέτοια προβλήματα. Γι αυτό και ποτέ δεν ελέγχουμε floating point αριθμούς για ισότητα, αλλά ελέγχουμε αν διαφέρουν κατά μία πολύ μικρή τιμή.

    Αν θέλεις κάποιο τύπο ο οποίος αναπαριστά δεκαδικούς χωρίς προβλήματα προσέγγισης, χρησιμοποίησε τον decimal.


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems