Πώς να χρησιμοποιήσετε το Java BigDecimal για την εμφάνιση αριθμών κινητής υποδιαστολής
Η κλάση Java BigDecimal επιτρέπει την επεξεργασία σύνθετων αριθμών κινητής υποδιαστολής με ακρίβεια. Μόλις δημιουργηθούν, μπορείτε να εφαρμόσετε διαφορετικές μεθόδους σε αυτούς. Η δομή της σύνταξης είναι πάντα η ίδια, οπότε είναι εύκολο να εξοικειωθείτε γρήγορα με την κλάση.
Τι είναι το Java BigDecimal;
Το Java BigDecimal σας επιτρέπει να εμφανίζετε και να επεξεργάζεστε με ακρίβεια σύνθετους αριθμούς κινητής υποδιαστολής οποιουδήποτε μεγέθους. Αυτό το άρθρο θα σας δείξει διαφορετικές μεθόδους για τη χρήση αυτής της κλάσης, είτε για στρογγυλοποίηση, αριθμητική είτε για μετατροπή μορφής. Θα μάθετε επίσης πώς να την εφαρμόζετε για κατακερματισμό και για ακριβείς, εξελιγμένες συγκρίσεις.
Το Java BigDecimal αποτελείται από μια κλίμακα ακέραιων αριθμών 32 bit και μια μη κλιμακωμένη ακέραια τιμή με προαιρετική ακρίβεια. Σε αυτήν την περίπτωση, «κλίμακα» σημαίνει τον αριθμό των ψηφίων μετά την υποδιαστολή, υπό την προϋπόθεση ότι είναι μεγαλύτερα ή ίσα με το μηδέν. Ωστόσο, εάν η τιμή είναι μικρότερη από το μηδέν, πολλαπλασιάζεται με 10^(-κλίμακα). Το μέγεθος της κλάσης περιορίζεται μόνο από τη μνήμη του υπολογιστή. Ωστόσο, αυτό είναι περισσότερο μια θεωρητική παρατήρηση, καθώς είναι απίθανο ένα πρόγραμμα να δημιουργήσει έναν αριθμό που υπερβαίνει τη διαθέσιμη μνήμη του. Το BigDecimal στη Java προορίζεται αποκλειστικά για αριθμούς κινητής υποδιαστολής, ενώ η κλάση BigInteger χρησιμοποιείται για την επεξεργασία ακέραιων αριθμών.
Γιατί είναι απαραίτητο το μάθημα;
Το επίπεδο ακρίβειας του Java BigDecimal δεν είναι απαραίτητο σε κάθε περίπτωση. Ωστόσο, υπάρχουν περιπτώσεις όπου η ακρίβειά του είναι ανεκτίμητη. Για παράδειγμα, εξυπηρετεί καλά τον σκοπό του στις συναλλαγές ηλεκτρονικού εμπορίου, όπου οι υπολογισμοί μπορούν να επηρεαστούν ακόμη και από το μικρότερο δεκαδικό ψηφίο. Η κλάση χρησιμοποιείται επίσης για τη διεξαγωγή ακριβών στατικών αναλύσεων. Τα προγράμματα που χρησιμοποιούνται για τον έλεγχο και την πλοήγηση αεροπλάνων ή πυραύλων βασίζονται στην κλάση, όπως και ο ιατρικός τομέας. Σε άλλους τομείς, τα επίπεδα ακρίβειας που προσφέρει το Java BigDecimal παρέχουν την καλύτερη δυνατή ασφάλεια.
Πώς δημιουργείται ένα αντικείμενο;
Για να χρησιμοποιήσετε το BigDecimal στη Java, θα πρέπει πρώτα να εισαγάγετε την κλάση στο πρόγραμμα Java. Αφού το κάνετε αυτό, μπορείτε να δηλώσετε ένα αντικείμενο αυτής της κλάσης. Στη συνέχεια, δημιουργήστε την επιθυμητή τιμή ως όρισμα και μεταβιβάστε την στον κατάλληλο κατασκευαστή Java. Αφού ολοκληρώσετε αυτή τη διαδικασία, μπορείτε να χρησιμοποιήσετε το BigDecimals στη Java. Μέσα στην κλάση, θα βρείτε διάφορες μεθόδους, τις οποίες θα εξηγήσουμε με περισσότερες λεπτομέρειες στην επόμενη ενότητα. Πρώτα, θα εισαγάγουμε την κλάση και θα δηλώσουμε δύο αντικείμενα BigDecimal:
/ / Your Java program for the BigDecimal class
import java.math.BigDecimal;
public class BigDecimalExample
{
public static void main(String[] args)
{
/ / Create two new BigDecimals
BigDecimal ExampleOne =
new BigDecimal ("1275936001.744297361");
BigDecimal ExampleTwo =
new BigDecimal ("4746691047.132719503");
}
}javaΤώρα μπορείτε να χρησιμοποιήσετε αυτά τα αντικείμενα με τις μεθόδους της κλάσης BigDecimal.
Παραδείγματα για Java BigDecimal
Αφού δημιουργήσετε τα αντικείμενα, μπορείτε να χρησιμοποιήσετε διάφορες μεθόδους για να τα χρησιμοποιήσετε και να εκτελέσετε λειτουργίες. Ας δούμε μερικά παραδείγματα για να σας δείξουμε πώς λειτουργεί αυτό. Η έξοδος ξεκινά χρησιμοποιώντας την εντολή Java System.out.println().
Προσθήκη δύο BigDecimals
Αν θέλετε να προσθέσετε δύο BigDecimals στη Java, πρέπει να χρησιμοποιήσετε τη μέθοδο add(). Για να το κάνετε αυτό, αποθηκεύστε τις δύο τιμές για τις οποίες θέλετε να υπολογίσετε το άθροισμα. Στο παράδειγμά μας, η τιμή ExampleOne θα προστεθεί στην τιμή ExampleTwo.
ExampleOne =
ExampleOne.add(ExampleTwo);
System.out.println ("Here is the result: " + ExampleOne);javaΑφαίρεση αριθμών
Για να αφαιρέσετε δύο τιμές μεταξύ τους, χρειάζεστε τη μέθοδο subtract(). Στο επόμενο παράδειγμα, αφαιρούμε ExampleTwo από ExampleOne.
ExampleOne =
ExampleOne.subtract(ExampleTwo);
System.out.println ("Here is the result: " + ExampleOne);javaΠολλαπλασιάστε τις τιμές
Η μέθοδος που χρησιμοποιείτε για να πολλαπλασιάσετε δύο BigDecimals στη Java λειτουργεί με παρόμοιο τρόπο. Ονομάζεται multiply(). Για να πολλαπλασιάσετε ExampleTwo με ExampleOne, χρησιμοποιήστε τον ακόλουθο κώδικα:
ExampleOne =
ExampleOne.multiply(ExampleTwo);
System.out.println ("Here is the result: " + ExampleOne);javaΔιαίρεση αριθμών
Αν θέλετε να διαιρέσετε δύο αντικείμενα BigDecimal σε Java, χρησιμοποιήστε τη μέθοδο divide(). Αυτή ακολουθεί την ίδια σύνταξη με τα άλλα παραδείγματα και έχει την εξής μορφή:
ExampleOne =
ExampleOne.divide(ExampleTwo);
System.out.println ("Here is the result: " + ExampleOne);javaΩστόσο, αυτό λειτουργεί μόνο αν το αποτέλεσμα είναι ακριβές ή ακέραιο. Αν δεν είναι έτσι, θα εμφανιστεί το ακόλουθο μήνυμα σφάλματος: java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result.. Αυτό περιγράφει ένα σφάλμα εκτέλεσης. Για να το αποφύγετε, υπάρχουν διάφορες επιλογές στρογγυλοποίησης για τη μέθοδο divide(), οι οποίες μπορούν να μεταδοθούν μέσω java.math.RoundingMode. Μπορείτε να επιλέξετε από τις ακόλουθες σταθερές:
| Σταθερά | Λειτουργία |
|---|---|
| ΟΡΙΟ | Στρογγυλοποιεί στο θετικό άπειρο |
| DOWN | Στρογγυλοποιεί στο 0 |
| FLOOR | Στρογγυλοποίηση σε αρνητικό άπειρο |
| HALF_DOWN | Στρογγυλοποίηση στον πλησιέστερο γειτονικό αριθμό και το αντίθετο του 0 εάν και οι δύο είναι ισοδύναμοι |
| HALF_EVEN | Στρογγυλοποίηση στον επόμενο γειτονικό αριθμό και στον επόμενο ζυγό αριθμό, εάν και οι δύο είναι ισαπέχοντες |
| HALF_UP | Στρογγυλοποιεί στον πλησιέστερο γειτονικό αριθμό και προς την κατεύθυνση του 0, υπό την προϋπόθεση ότι και οι δύο βρίσκονται στην ίδια απόσταση |
| UNNECESSARY | Παραλείπει τη στρογγυλοποίηση και εκτελεί μόνο ακριβείς πράξεις. Μπορεί να χρησιμοποιηθεί μόνο αν η διαίρεση είναι ακριβής. |
| UP | Στρογγυλοποιεί μακριά από το 0 |
Επισκόπηση των σημαντικότερων μεθόδων
Τώρα που έμαθες πώς να χρησιμοποιείς το BigDecimal στη Java, ακολουθεί μια επισκόπηση μερικές από τις πιο σημαντικές μεθόδους που μπορείς να χρησιμοποιήσεις μαζί του.
| Μέθοδος | Συνάρτηση |
|---|---|
| abs() | Επιστρέφει ένα BigDecimal με την απόλυτη τιμή του |
| add() | Επιστρέφει ένα BigDecimal του οποίου η τιμή αποτελείται από (αυτό + προσθετό) |
| divide() | Η τιμή εξόδου προκύπτει από (αυτό / Διαιρέτης) |
| max(BigDecimal val) | Εξάγει το μέγιστο του BigDecimal |
| min(BigDecimal val) | Εξάγει το ελάχιστο του BigDecimal |
| movePointLeft(int n) | Εξάγει ένα BigDecimal όπου η δεκαδική τελεία έχει μετακινηθεί προς τα αριστερά κατά την τιμή «n» |
| movePointRight(int n) | Εξάγει ένα BigDecimal όπου η δεκαδική τελεία έχει μετακινηθεί προς τα δεξιά κατά την τιμή «n» |
| multiply(BigDecimal multiplicand, MathContext mc) | Επιστρέφει μια τιμή που προκύπτει από (αυτό * multiplicand) |
7α13β71β544α0α47β82β89c94cb2cba2