1. 程式人生 > >BigData(BigInteger和BigDecimal)

BigData(BigInteger和BigDecimal)

常用的BigData 有兩種,一種是BigInteger,用於整數;另外一種是BigDecimal用於是實數,需要注意的是BigDecimal再做出發運算應該會遇到除不盡的情況,因此需要設定保留幾位小數。
import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.*;
public class testbigdata {
    public static void main(String args[]){
        Scanner in=new Scanner(System.in);
        String str1=in.nextLine();
        String str2=in.nextLine();
        BigInteger num3=new BigInteger(in.nextLine());
        BigInteger num1=new BigInteger(str1);
        BigInteger num2=new BigInteger(str2);
        System.out.println(num3);
        System.out.println(num1.add(num2));
        System.out.println(num1.multiply(num2));
        System.out.println(num1.subtract(num2));
        System.out.println(num1.divide(num2));

        BigDecimal num4=new BigDecimal(in.nextLine());
        BigDecimal num5=new BigDecimal(in.nextLine());
        BigDecimal num6=new BigDecimal(in.nextLine());

        System.out.println(num4);
        System.out.println(num5.add(num6));
        System.out.println(num5.multiply(num6));
        System.out.println(num5.subtract(num6));
        System.out.println(num6.divide(num5,2));//此處的2代表保留兩位小數
    }
}

應用場景:1/3=0.3333333333....  解決之道:就是給divide設定精確的小數點divide(xxxxx,2, BigDecimal.ROUND_HALF_EVEN)

原     型:  (BigDecimal  divisor, int scale, int roundingMode)                     返回一個 BigDecimal ,其值為 (this / divisor) ,其標度為指定標度。

import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.*;
public class testbigdata {
    public static void main(String args[]){
        Scanner in=new Scanner(System.in);
 
        BigDecimal num5=new BigDecimal(in.nextLine());
        BigDecimal num6=new BigDecimal(in.nextLine());
        
        System.out.println(num5.add(num6));
        System.out.println(num5.multiply(num6));
        System.out.println(num5.subtract(num6));
        System.out.println(num5.divide(num6,2,BigDecimal.ROUND_HALF_EVEN));//此處的2代表保留兩位小數,BigDecimal.ROUND_HALF_EVEN代表四捨五入
    }
}