Maison > Java > javaDidacticiel > le corps du texte

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

PHPz
Libérer: 2023-04-27 22:40:05
avant
1275 Les gens l'ont consulté

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进行比较
    }
}
Copier après la connexion

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));
    }
}
Copier après la connexion

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!

Étiquettes associées:
source:yisu.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!