BigData(BigInteger和BigDecimal)
阿新 • • 發佈:2018-12-17
常用的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代表四捨五入 } }