java之BigInteger BigDecimal
1、BigInteger的构造方法同包装类,参数传入字符串(一般为超过Long数据的长度)
1 / 2 public static void main(String[] args) { 3 //大数据封装为BigInteger对象 4 BigInteger big1 = new BigInteger("12345678909876543210"); 5 BigInteger big2 = new BigInteger("98765432101234567890"); 6 //add实现加法运算 7 BigInteger bigAdd = big1.add(big2); 8 //subtract实现减法运算 9 BigInteger bigSub = big1.subtract(big2); 10 //multiply实现乘法运算 11 BigInteger bigMul = big1.multiply(big2); 12 //divide实现除法运算 13 BigInteger bigDiv = big2.divide(big1); 14 }
配合Random类,产生随机数
1 Random r = new Random() ; 2 BigInteger bigInteger1 = new BigInteger(2,r); 3 // 0 到 (2^numBits - 1) 范围的随机数 4 System.out.println(bigInteger1);
2、BigDecimal对象进行高精度的运算(double float)
在程序中执行下列代码,会出现什么问题?
System.out.println(0.09 + 0.01);
System.out.println(1.0 - 0.32);
System.out.println(1.015 * 100);
System.out.println(1.301 / 100);
double和float类型在运算中很容易丢失精度,造成数据的不准确性,Java提供我们BigDecimal类可以实现浮点数据的高精度运算
通过BigDecimal创建对象,传入参数,为浮点型的字符串
1 public static void main(String[] args) { 2 //大数据封装为BigDecimal对象 3 BigDecimal big1 = new BigDecimal("0.09"); 4 BigDecimal big2 = new BigDecimal("0.01"); 5 //add实现加法运算 6 BigDecimal bigAdd = big1.add(big2); 7 8 BigDecimal big3 = new BigDecimal("1.0"); 9 BigDecimal big4 = new BigDecimal("0.32"); 10 //subtract实现减法运算 11 BigDecimal bigSub = big3.subtract(big4); 12 13 BigDecimal big5 = new BigDecimal("1.105"); 14 BigDecimal big6 = new BigDecimal("100"); 15 //multiply实现乘法运算 16 BigDecimal bigMul = big5.multiply(big6);
然后进行add()/substract()/multiply()/divide()运算