BluEDr4g0n Δημοσ. 22 Οκτωβρίου 2014 Δημοσ. 22 Οκτωβρίου 2014 Καλησπέρα σας! προγραμματίζω αυτό τον καιρό μια εφαρμογή σε android και έχω το ακόλουθο πρόβλημα. Προσπαθώ να κάνω πράξεις ανάμεσα σε double και ενώ όταν τα δεκαδικά ψηφία είναι 0 (πχ 5.0 + 4.0 = 9.0) οι πράξεις γίνονται σωστά, όταν όμως κάνω (πχ 33.0 + 1.3) μου δίνει αποτέλεσμα 34.29999923706055. Γνωρίζει κανένας πώς το λύνω αυτό?
gon1332 Δημοσ. 23 Οκτωβρίου 2014 Δημοσ. 23 Οκτωβρίου 2014 Καλησπέρα σας! προγραμματίζω αυτό τον καιρό μια εφαρμογή σε android και έχω το ακόλουθο πρόβλημα. Προσπαθώ να κάνω πράξεις ανάμεσα σε double και ενώ όταν τα δεκαδικά ψηφία είναι 0 (πχ 5.0 + 4.0 = 9.0) οι πράξεις γίνονται σωστά, όταν όμως κάνω (πχ 33.0 + 1.3) μου δίνει αποτέλεσμα 34.29999923706055. Γνωρίζει κανένας πώς το λύνω αυτό? Όπως είδες και μόνος/η σου, ο υπολογιστής δεν έχει άπειρη ακρίβεια. Είναι απόλυτα φυσιολογικό. Εσύ τι ακρίβεια επιθυμείς να πετυχαίνεις; Πόσων δεκαδικών ψηφίων; Μπορείς είτε να κάνεις στρογγυλοποίηση στο δεκαδικό που επιθυμείς, είτε να προσπαθήσεις να φέρεις τον αλγόριθμο που χρησιμοποιείς σε μορφή ώστε να προσθέτει αριθμούς οι οποίοι είναι πολύ κοντά (αν και το 33.0 και το 1.3 δεν είναι και τόσο μακριά).
BluEDr4g0n Δημοσ. 23 Οκτωβρίου 2014 Μέλος Δημοσ. 23 Οκτωβρίου 2014 Όπως είδες και μόνος/η σου, ο υπολογιστής δεν έχει άπειρη ακρίβεια. Είναι απόλυτα φυσιολογικό. Εσύ τι ακρίβεια επιθυμείς να πετυχαίνεις; Πόσων δεκαδικών ψηφίων; Μπορείς είτε να κάνεις στρογγυλοποίηση στο δεκαδικό που επιθυμείς, είτε να προσπαθήσεις να φέρεις τον αλγόριθμο που χρησιμοποιείς σε μορφή ώστε να προσθέτει αριθμούς οι οποίοι είναι πολύ κοντά (αν και το 33.0 και το 1.3 δεν είναι και τόσο μακριά). Απλή στρογγυλοποίηση μόνο 2 δεκαδικά με ενδιαφέρουν. Σκέφτηκα να κάνω μια function που να το φτιάχνει οταν το κάνει έτσι αλλα μου φαίνεται τελείως χαζό αυτό που συμβαίνει... Μάλλον θα κάνω αυτό με τη συνάρτηση να ξεμπερδεύω... Σε ευχαριστώ!!! Ωπ σαν να βρήκα κάτι απο το γουγλε... απο Site: εδώ κάνει την τέλεια στρογγυλοποίηση!!! double value = 200.325665456; DecimalFormat df = new DecimalFormat("####0.00"); System.out.println("Value: " + df.format(value));
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα