Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

Καλησπέρα σας! προγραμματίζω αυτό τον καιρό μια εφαρμογή σε android και έχω το ακόλουθο πρόβλημα. Προσπαθώ να κάνω πράξεις ανάμεσα σε double και ενώ όταν τα δεκαδικά ψηφία είναι 0 (πχ 5.0 + 4.0 = 9.0) οι πράξεις γίνονται σωστά, όταν όμως κάνω (πχ 33.0 + 1.3) μου δίνει αποτέλεσμα 34.29999923706055. Γνωρίζει κανένας πώς το λύνω αυτό? 

Δημοσ.

Καλησπέρα σας! προγραμματίζω αυτό τον καιρό μια εφαρμογή σε android και έχω το ακόλουθο πρόβλημα. Προσπαθώ να κάνω πράξεις ανάμεσα σε double και ενώ όταν τα δεκαδικά ψηφία είναι 0 (πχ 5.0 + 4.0 = 9.0) οι πράξεις γίνονται σωστά, όταν όμως κάνω (πχ 33.0 + 1.3) μου δίνει αποτέλεσμα 34.29999923706055. Γνωρίζει κανένας πώς το λύνω αυτό? 

Όπως είδες και μόνος/η σου, ο υπολογιστής δεν έχει άπειρη ακρίβεια. Είναι απόλυτα φυσιολογικό. Εσύ τι ακρίβεια επιθυμείς να πετυχαίνεις; Πόσων δεκαδικών ψηφίων; Μπορείς είτε να κάνεις στρογγυλοποίηση στο δεκαδικό που επιθυμείς, είτε να προσπαθήσεις να φέρεις τον αλγόριθμο που χρησιμοποιείς σε μορφή ώστε να προσθέτει αριθμούς οι οποίοι είναι πολύ κοντά (αν και το 33.0 και το 1.3 δεν είναι και τόσο μακριά).

Δημοσ.

Όπως είδες και μόνος/η σου, ο υπολογιστής δεν έχει άπειρη ακρίβεια. Είναι απόλυτα φυσιολογικό. Εσύ τι ακρίβεια επιθυμείς να πετυχαίνεις; Πόσων δεκαδικών ψηφίων; Μπορείς είτε να κάνεις στρογγυλοποίηση στο δεκαδικό που επιθυμείς, είτε να προσπαθήσεις να φέρεις τον αλγόριθμο που χρησιμοποιείς σε μορφή ώστε να προσθέτει αριθμούς οι οποίοι είναι πολύ κοντά (αν και το 33.0 και το 1.3 δεν είναι και τόσο μακριά).

 

Απλή στρογγυλοποίηση μόνο 2 δεκαδικά με ενδιαφέρουν. Σκέφτηκα να κάνω μια function που να το φτιάχνει οταν το κάνει έτσι αλλα μου φαίνεται τελείως χαζό αυτό που συμβαίνει... Μάλλον θα κάνω αυτό με τη συνάρτηση να ξεμπερδεύω... Σε ευχαριστώ!!!

Ωπ σαν να βρήκα κάτι απο το γουγλε... απο Link.png Site: εδώ κάνει την τέλεια στρογγυλοποίηση!!!

double value = 200.325665456;
DecimalFormat df = new DecimalFormat("####0.00");
System.out.println("Value: " + df.format(value));

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...