Maison >Java >javaDidacticiel >Analyse d'un grand nombre d'exemples de classes Java BigInteger et BigDecimal

Analyse d'un grand nombre d'exemples de classes Java BigInteger et BigDecimal

PHPz
PHPzavant
2023-04-27 22:40:051331parcourir

Classe BigInteger

En Java, de nombreuses classes doivent être traitées, comme la classe Integer, mais la classe Integer a également une limite supérieure. Sa valeur maximale est 2^31-1.

Si nous voulons représenter un nombre plus grand à ce moment, il ne peut pas être représenté par Integer, donc Java fournit la classe BigInteger.

Les nombres pris en charge par la classe BigInteger peuvent être considérés comme infinis, et elle prend en charge les entiers de précision arbitraire, ce qui signifie qu'elle peut représenter avec précision n'importe quelle valeur sans perte.

Je voudrais également souligner ici que le type de numéro entrant étant un type de caractère, vous ne pouvez pas utiliser + - * lorsque vous effectuez des opérations /

correspond aux méthodes d'utilisation :

add(), soustract(. ), multiplier(), diviser()

et quelques méthodes courantes :

méthode equals. À titre de comparaison

Démonstration du code :

import java.math.BigInteger;
public class Demo01 {
    public static void main(String[] args) {
        BigInteger bigInteger1 = new BigInteger("2222222222222222222222222222222");
        BigInteger bigInteger2 = new BigInteger("1111111111111111111111111111111");
        System.out.println("bigInteger1大数为:" + bigInteger1);
        System.out.println("bigInteger2大数为:" + bigInteger2);
        System.out.println("两个大数相加:" + bigInteger1.add(bigInteger2));//加
        System.out.println("两个大数相减:" + bigInteger1.subtract(bigInteger2));//减
        System.out.println("两个大数相乘:" + bigInteger1.multiply(bigInteger2));//乘
        System.out.println("两个大数相除:" + bigInteger1.divide(bigInteger2));//除
        System.out.println("两个大数相比:" + bigInteger1.equals(bigInteger2));//equals进行比较
    }
}

Analyse dun grand nombre dexemples de classes Java BigInteger et BigDecimal

Lors de la division, s'il y a des décimales, les décimales sont interceptées ici.

Bien sûr, il existe non seulement des types entiers, mais aussi des types à virgule flottante.

Classe BigDecimal

Bien sûr, la précision de la virgule flottante peut être aussi grande que possible.

import java.math.BigDecimal;
public class Demo02 {
    public static void main(String[] args) {
        BigDecimal bigDecimal1 = new BigDecimal("12232423432432.53241234324");
        BigDecimal bigDecimal2 = new BigDecimal("2.0");
        System.out.println("bigDecimal1值: " + bigDecimal1);
        System.out.println("bigDecimal2值: " + bigDecimal2);
        System.out.println("加:" + bigDecimal1.add(bigDecimal2));
        System.out.println("减:" + bigDecimal1.subtract(bigDecimal2));
        System.out.println("乘:" + bigDecimal1.multiply(bigDecimal2));
        System.out.println("除:" + bigDecimal1.divide(bigDecimal2));
    }
}

Analyse dun grand nombre dexemples de classes Java BigInteger et BigDecimal

Dans la méthode BigDecimal, cela peut également mieux résoudre le problème de précision dans le langage Java (comme le problème que le résultat de 0,1x3 == 0,3 est faux)

Analyse dun grand nombre dexemples de classes Java BigInteger et BigDecimal

La division dans le BigDecimal la classe ne peut pas être terminée Problème

Mais il y a un point auquel vous devez faire attention lorsque vous utilisez BigDecimal (lorsqu'il rencontre quelque chose qui ne peut pas être divisé, il choisira de signaler une erreur.)

Analyse dun grand nombre dexemples de classes Java BigInteger et BigDecimal

Donc, lors de la division , donnez-lui juste un peu d'interception.

Regardons d'abord une méthode :

division BigDecimal publique (diviseur BigDecimal, échelle int, mode d'arrondi int)

diviseur - diviseur.

scale - Combien de décimales conserver

roundingMode - Choisissez le mode d'arrondi

Nous pouvons donc l'écrire comme ceci :

Analyse dun grand nombre dexemples de classes Java BigInteger et BigDecimal

Sélection du mode d'arrondi :

Mode signifiant
ROUND_CEILING Récupérer vers l'infini positif
ROUND_DOWN Récupérer vers 0
ROUND_FLOOR Récupérer vers l'infini négatif
ROUND_HALF _ DOWN Arrondissez à l'inférieur lorsque vous rencontrez .5
ROUND_HALF_UP Arrondissez lorsque vous rencontrez 0,5 et prenez le nombre vers le haut
ROUND_HALF_EVEN Arrondissez lorsque vous rencontrez 5 et regardez le nombre précédent s'il est supérieur à 5, il augmentera, s'il est inférieur à 5, il descendra. S'il est égal à 5, il attendra.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer