Εάν η τιμή είναι 200.3456
, θα πρέπει να διαμορφωθεί σε 200.34
.
Εάν είναι 200
, τότε θα πρέπει να είναι 200.00
.
Αν θέλετε απλώς να εκτυπώσετε ένα double
με δύο ψηφία μετά το δεκαδικό σημείο, χρησιμοποιήστε κάτι τέτοιο:
double value = 200.3456;
System.out.printf("Value: %.2f", value);
Αν θέλετε να έχετε το αποτέλεσμα σε μια String
αντί να εκτυπωθεί στην κονσόλα, χρησιμοποιήστε την String.format()
με τα ίδια ορίσματα:
String result = String.format("%.2f", value);
Ή χρησιμοποιήστε την κλάση DecimalFormat
:
DecimalFormat df = new DecimalFormat("####0.00");
System.out.println("Value: " + df.format(value));
Ο ευκολότερος τρόπος θα ήταν να κάνετε ένα κόλπο όπως αυτό,
double val = ....;
val = val*100;
val = Math.round(val);
val = val /100;
αν η val ξεκινάει από 200,3456, μετά πηγαίνει στο 20034,56, μετά στρογγυλοποιείται στο 20035 και μετά το διαιρούμε για να πάρουμε το 200,34.
αν θέλαμε να στρογγυλοποιούμε πάντα προς τα κάτω, θα μπορούσαμε πάντα να κάνουμε αποκοπή με μετατροπή σε int:
double val = ....;
val = val*100;
val = (double)((int) val);
val = val /100;
Αυτή η τεχνική θα δουλέψει για τις περισσότερες περιπτώσεις επειδή για πολύ μεγάλα διπλά (θετικά ή αρνητικά) μπορεί να υπερχειλίσει. αλλά αν ξέρετε ότι οι τιμές σας θα είναι σε ένα κατάλληλο εύρος, τότε αυτό θα πρέπει να δουλέψει για εσάς.
Η στρογγυλοποίηση ενός διπλού δεν είναι συνήθως αυτό που θέλει κανείς. Αντ' αυτού, χρησιμοποιήστε String.format()
για να το αναπαραστήσετε στην επιθυμητή μορφή.