ホームページ  >  記事  >  Java  >  Java の大きな数値 BigInteger および BigDecimal クラスの例の分析

Java の大きな数値 BigInteger および BigDecimal クラスの例の分析

PHPz
PHPz転載
2023-04-27 22:40:051296ブラウズ

BigIntegerクラス

JavaにはIntegerクラスなど処理が必要なクラスがたくさんありますが、Integerクラスにも上限があります。その最大値は 2^31-1 です。

このとき、より大きな数を表現したい場合は、Integer では表現できないため、Java では BigInteger クラスが提供されています。

BigInteger クラスでサポートされる数値は無限であると言え、任意の精度の整数をサポートします。つまり、あらゆる値を損失なく正確に表現できます。

ここで、渡される数値型は文字型であるため、操作を実行するときに - * /

は使用できないことも強調したいと思います。これらの使用方法に対応します。

add()、subtract()、multiply()、divide()

いくつかの一般的なメソッドもあります:

equals方法。比較

コードのデモ:

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进行比较
    }
}

Java の大きな数値 BigInteger および BigDecimal クラスの例の分析

除算を行うとき、小数点以下の桁がある場合、ここで小数点以下の桁が切り取られます。

もちろん整数型だけでなく浮動小数点型もあります。

BigDecimal Class

もちろん、浮動小数点型の精度も可能な限り大きくすることができます。

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));
    }
}

Java の大きな数値 BigInteger および BigDecimal クラスの例の分析

BigDecimal メソッドでは、Java 言語の精度の問題 (0.1x3 == 0.3 の結果が false になる問題など) をより適切に解決することもできます。

Java の大きな数値 BigInteger および BigDecimal クラスの例の分析

BigDecimal クラスの不完全除算の問題

しかし、BigDecimal を使用する際に注意しなければならない点もあります (遭遇した場合)割り算できない問題の場合は、エラーを報告するものを選択します。)

Java の大きな数値 BigInteger および BigDecimal クラスの例の分析

したがって、割り算を行うときは、切り捨て数値を与えるだけです。

最初にメソッドを見てみましょう:

public BigDecimal Division(BigDecimal divisor, intscale, introundingMode)

divisor - 除数。

scale - 小数点以下の桁数

roundingMode - 丸めモードを選択します

したがって、次のように記述できます:

Java の大きな数値 BigInteger および BigDecimal クラスの例の分析

丸めモードの選択:

モード 意味
ROUND_CEILING 正の無限大に向かう数値を取得します
ROUND_DOWN 0に向かう数値を取得します
#ROUND_FLOOR 数値を負の無限大方向に取得します
ROUND_HALF_DOWN .5
に遭遇した場合は切り捨てます## ROUND_HALF_UP .5 に遭遇した場合は切り上げます。
ROUND_HALF_EVEN 5 に遭遇した場合は切り上げ、前の数値が大きい場合は調べます。 5 より小さい場合は上方向に進み、5 未満の場合は上方向に進みます。5 に等しい場合は下方向に進み、前方に進みます。

以上がJava の大きな数値 BigInteger および BigDecimal クラスの例の分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。