首頁  >  文章  >  Java  >  Java的大數型BigInteger與BigDecimal類別實例分析

Java的大數型BigInteger與BigDecimal類別實例分析

PHPz
PHPz轉載
2023-04-27 22:40:051277瀏覽

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類別

當然浮點型的精確度也是可以盡可能大的。

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 divide(BigDecimal divisor, int scale, int roundingMode)

#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中文網其他相關文章!

陳述:
本文轉載於:yisu.com。如有侵權,請聯絡admin@php.cn刪除