用户名同QQ号

 

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);

 doublefloat类型在运算中很容易丢失精度,造成数据的不准确性,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()运算

posted on 2019-12-26 22:25  用户名同QQ号  阅读(146)  评论(0编辑  收藏  举报

导航