Comment faire de l'arithmétique BigDecimal pour Java

Le pire, sur l'utilisation du BigDecimal classe en Java est que vous ne pouvez pas utiliser les opérateurs arithmétiques normales avec BigDecimal objets. BigDecimal arithmétique a rules.T différente qu'il code suivant, par exemple, ne sera pas de compiler:

BigDecimal Total partiel, TaxRate, fiscale, totale-Sous-total = new BigDecimal ("32.50") - TaxRate = new BigDecimal ("0,05") - impôt = Sous-total * taxRate- // erreur: ne sera pas compiletotal = Sous-total + taxes // cette ne compilera soit

Au lieu de cela, vous devez appeler les méthodes de la BigDecimal classe pour effectuer des opérations arithmétiques de base. Toutes ces méthodes renvoient le résultat du calcul en tant que BigDecimal objets. Voici comment vous pouvez effectuer le calcul d'imposition précédente:

BigDecimal Total partiel, TaxRate, fiscale, totale-Sous-total = new BigDecimal ("32.50") - TaxRate = new BigDecimal ("0,05") - impôt = subTotal.multiply (TaxRate) -Total = subTotal.add (impôts) -

Voici une liste de toutes les méthodes arithmétiques pour le BigDecimal classe. Comme vous pouvez le voir, la classe a des méthodes pour les opérations de base telles que ajouter, soustraire, multiplier, et diviser, ainsi que des opérations supplémentaires telles que abdos (le pouvoir absolu), pow (portant le nombre à une puissance), et négatif (changer le signe du nombre).

MéthodeExplication
BigDecimal abs ()Retourne la valeur absolue de cette BigDecimal.
BIGDECIMAL ajouterAjoute la valeur spécifiée BigDecimal pour çaBigDecimal et renvoie le résultat.
BigDecimal fracture (BigDecimalval)Divise cette BigDecimapar l thespecified BigDecimal et les retours theResult. La méthode peut jeter ArithmeticException.
BigDecimal [] divideAndRemainder (BigDecimalval)Divise cette BigDecimal par thespecified BigDecimal. Le résultat et theremainder sont retournés comme un tableau à deux éléments BigDecimal.
BigDecimal [] divideToIntegralValue (BigDecimalval)Divise cette BigDecimal par thespecified BigDecimal et renvoie theinteger résultat.
BigDecimal max (BigDecimal val)Renvoie la plus grande de cette BigDecimalet le spécifié BigDecimal.
BigDecimal min (BigDecimal val)Renvoie la plus petite de cette BigDecimal et BigDecimal spécifié.
BigDecimal multiplient (BigDecimalval)Multiplie ce BigDecimal par thespecified BigDecimal et les retours theResult.
BIGDECIMAL nier ()La négation de ce BigDecimal et returnsthe résultat.
BigDecimal Pow (puissance int)Soulève cette BigDecimal à l'powerspecified par le int la valeur et le résultat de returnsthe.
Reste BigDecimal (BigDecimalval)Divise cette BigDecimal par thespecified BigDecimal et revient theremainder.
BigDecimal soustraction (BigDecimalval)Soustrait la valeur spécifiée BigDecimalà partir de cette BigDecimal et les retours theResult.



Notez que, en plus de la division normale, vous pouvez utiliser la divideToIntegralValue Procédé pour retourner la partie entière du résultat. Voici un exemple:

BigDecimal a = new BigDecimal ("23,5") - BigDecimal b = new BigDecimal ("7.0") - BigDecimal cc = a.divideToIntegralValue (b) -

Après ces déclarations exécuter, la valeur de c est 3.

Vous pouvez également utiliser la reste méthode pour obtenir le reste d'une division:

c = a.remainder (b) -

Voici la valeur de c est 2.5.

Une erreur commune parmi les nouveaux utilisateurs de la BigDecimal classe est d'oublier d'affecter le résultat d'une opération arithmétique. Vous pourriez regarder cette boucle de code pendant des heures, se demandant pourquoi il ne semble pas fonctionner:

BigDecimal totalWinnings = new BigDecimal ("1000.00") - BigDecimal winningsThisGame = new BigDecimal ("200.00") - totalWinnings.add (winningsThisGame) -System.out.println (totalWinnings) -

La troisième déclaration ajoute winningsThisGame à totalWinnings mais rejette le résultat. Qu'est-ce que vous vouliez dire sans doute était-ce:

totalWinnings = totalWinnings.add (winningsThisGame) -

» » » » Comment faire de l'arithmétique BigDecimal pour Java