大數字
當一個數字非常大的時候,是無法使用基本類型接收的,在早期開發中如果碰到大數字的時候往往會使用String類進行接收,之後採用拆分的方式進行計算。但是這一系列的操作過於繁瑣,所以爲了解決這樣的難題在java.math包中提供了大數字的操作類:BigInteger(整數)、BigDecimal(浮點數),這兩個類都是Number子類
BigInteger類的常用方法
BigDecimal常用方法
範例:使用BigInteger實現四則運算
import java.math.BigInteger;
public class JavaAPIDemo353 {
public static void main(String[] args) {
BigInteger bigA=new BigInteger("156181851741");
BigInteger bigB=new BigInteger("15591446951");
System.out.println("加法操作:"+bigA.add(bigB));
System.out.println("減法操作:"+bigA.subtract(bigB));
System.out.println("乘法操作:"+bigA.multiply(bigB));
System.out.println("除法操作:"+bigA.divide(bigB));
System.out.println("最大值:"+bigA.max(bigB));
System.out.println("最小值:"+bigA.min(bigB));
BigInteger [] result=bigA.divideAndRemainder(bigB);//商和餘構成一個數組
System.out.println("商:"+result[0]+"餘:"+result[1]);
}
}
執行結果
加法操作:171773298692
減法操作:140590404790
乘法操作:2435101056128748491691
除法操作:10
最大值:156181851741
最小值:15591446951
商:10餘:267382231
實例化BigInteger對象時的數據類型爲String型,這樣可以不受數據類型長度影響。
BigDecimal和BigInteger類似,但是BigDecimal類中提供一個進位的除法操作。
範例:使用BigDecimal實現四捨五入
import java.math.BigDecimal;
import java.math.RoundingMode;
public class MathUtil {
private MathUtil () {}
/**
*
* @param num要進行四捨五入的數字
* @param scale要保留的位數
* @return
*/
public static double roung(double num,int scale) {
//數字除以1.0還是數字本身,divide()方法保留指定位數的小數,並設置進位模式爲向上進位HALF_UP。doubleValue()類型轉換,轉換爲double型
return new BigDecimal(num).divide(new BigDecimal(1.0), scale, RoundingMode.HALF_UP).doubleValue();
}
}
public class JavaAPIDemo354 {
public static void main(String[] args) {
System.out.println(MathUtil.roung(19.6352, 2));
}
}
執行結果
19.64