Test avec une division par zéro
Dans l'étape précédente, nous avons vu comment Double.isInfinite()
fonctionne avec des valeurs d'infini prédéfinies. Maintenant, explorons un scénario courant où l'infini peut apparaître dans les calculs : la division par zéro.
En arithmétique standard, la division par zéro est indéfinie. Cependant, en arithmétique à virgule flottante (que le type double
utilise), diviser un nombre non nul par zéro donne l'infini positif ou négatif, selon le signe du numérateur. Diviser zéro par zéro, ou l'infini par l'infini, donne une valeur spéciale appelée "Not a Number" (NaN), que nous aborderons dans l'étape suivante.
Modifions notre programme pour démontrer la division par zéro et vérifier le résultat en utilisant Double.isInfinite()
.
-
Ouvrez le fichier HelloJava.java
dans l'éditeur WebIDE. Vous devriez être dans le répertoire ~/project
.
-
Remplacez le code actuel par le suivant :
public class HelloJava {
public static void main(String[] args) {
double positiveResult = 10.0 / 0.0;
double negativeResult = -10.0 / 0.0;
double zeroResult = 0.0 / 10.0;
System.out.println("Result of 10.0 / 0.0: " + positiveResult);
System.out.println("Is 10.0 / 0.0 infinite? " + Double.isInfinite(positiveResult));
System.out.println("Result of -10.0 / 0.0: " + negativeResult);
System.out.println("Is -10.0 / 0.0 infinite? " + Double.isInfinite(negativeResult));
System.out.println("Result of 0.0 / 10.0: " + zeroResult);
System.out.println("Is 0.0 / 10.0 infinite? " + Double.isInfinite(zeroResult));
}
}
Voici ce qui se passe dans ce nouveau code :
double positiveResult = 10.0 / 0.0;
: Nous divisons un nombre positif (10.0
) par zéro (0.0
). En arithmétique à virgule flottante, cela donne l'infini positif.
double negativeResult = -10.0 / 0.0;
: Nous divisons un nombre négatif (-10.0
) par zéro (0.0
). Cela donne l'infini négatif.
double zeroResult = 0.0 / 10.0;
: Nous divisons zéro (0.0
) par un nombre non nul (10.0
). Cela donne zéro, qui est un nombre fini.
- Nous affichons ensuite les résultats de ces divisions et utilisons
Double.isInfinite()
pour vérifier si chaque résultat est infini.
-
Enregistrez le fichier (Ctrl+S ou Cmd+S).
-
Compilez le programme modifié dans le terminal :
javac HelloJava.java
Encore une fois, l'absence de sortie indique que la compilation a réussi.
-
Exécutez le programme :
java HelloJava
Vous devriez voir une sortie similaire à ceci :
Result of 10.0 / 0.0: Infinity
Is 10.0 / 0.0 infinite? true
Result of -10.0 / 0.0: -Infinity
Is -10.0 / 0.0 infinite? true
Result of 0.0 / 10.0: 0.0
Is 0.0 / 10.0 infinite? false
Cela démontre que diviser un nombre à virgule flottante non nul par zéro produit correctement l'infini (positif ou négatif), et que Double.isInfinite()
identifie précisément ces résultats. Diviser zéro par un nombre non nul donne zéro, qui n'est pas infini.