« Programmation Java/Nombre de taille arbitraire » : différence entre les versions

Contenu supprimé Contenu ajouté
Aucun résumé des modifications
Ligne 44 :
 
=== Opérations ===
 
Les opérateurs en Java ne s'appliquent qu'aux types primitifs, excepté le plus <code>+</code> permettant de concaténer des chaînes de caractères.
Pour effectuer des opérations sur des instances de <code>BigInteger</code>, il faut appeler les méthodes résumées dans le tableau ci-dessous.
Une instance de <code>BigInteger</code> étant immuable, les méthodes ne modifie pas l'objet lui-même mais retournent une nouvelle instance pour le résultat.
Si ce n'était pas le cas, il serait possible de modifier la valeur de <code>BigInteger.ONE</code> par exemple, ce qui fausserait les calculs utilisant la constante.
 
{| class="wikitable"
|+ <syntaxhighlight lang="java" inline>BigInteger a.</syntaxhighlight>
! Opérateur équivalent
! Méthode
! Description
|-
| style="text-align:center;" | <code>+</code> || add(BigInteger b)
| Retourne le résultat de l'addition <syntaxhighlight lang="java" inline>a+b</syntaxhighlight>
|-
| style="text-align:center;" | <code>-</code> || subtract(BigInteger b)
| Retourne le résultat de la soustraction <syntaxhighlight lang="java" inline>a-b</syntaxhighlight>
|-
| style="text-align:center;" | <code>*</code> || multiply(BigInteger b)
| Retourne le résultat de la multiplication <syntaxhighlight lang="java" inline>a*b</syntaxhighlight>
|-
| style="text-align:center;" | <code>*</code> || divide(BigInteger b)
| Retourne le résultat de la division <syntaxhighlight lang="java" inline>a/b</syntaxhighlight>
|-
| style="text-align:center;" | <code>%</code> || remainder(BigInteger b)
| Retourne le reste de la division <syntaxhighlight lang="java" inline>a%b</syntaxhighlight>
|-
| class="hachure" | || mod(BigInteger b)
| Retourne le modulo de a et b. Par rapport au reste de la division, le modulo n'est jamais négatif.
|}
 
Comme les expressions complexes sur ces nombres entraînent la création de multiples instances, il n'est pas utile de garder les résultats intermédiaires, sauf de manière temporaire pour déboguer l'expression.
Il est donc courant d'enchaîner les méthodes :
 
<syntaxhighlight lang="java">
BigInteger
a = new BigInteger("1500000000"),
b = new BigInteger("578000057"),
c = new BigInteger("1234567");
 
// d = ( a+b ) * c / 10
BigInteger d = a.add(b).multiply(c).divide(BigInteger.TEN);
</syntaxhighlight>
 
== Nombre décimal ==