Java常用API 超大型整数 超大型浮点数

 

    import java.math.BigInteger;
        
        BigInteger a = new BigInteger("893847367237384949488326178");//类的构造方法   因参数选用String类型  可使数的范围不受限制
        BigInteger b = new BigInteger("65398714322036257495684264");
        
        //四则运算  运算结果也是BigInteger类型的对象
        BigInteger r1 = a.add(b);//加法
        BigInteger r2 = a.subtract(b);//减法
        BigInteger r3 = a.multiply(b);//乘法
        BigInteger r4 = a.divide(b);//除法
        
        System.out.println(r1);
        System.out.println(r2);
        System.out.println(r3);
        System.out.println(r4);

 

//浮点数不精确
//超大型浮点数,提供高精度的运算

import java.math.BigDecimal;

        //加法add
        System.out.println(0.09 + 0.01);//0.09999999999999999        
        BigDecimal a1 = new BigDecimal("0.09");
        BigDecimal b1 = new BigDecimal("0.01");
        BigDecimal c1 = a1.add(b1);
        System.out.println(c1);
        //减法subtract
        System.out.println(1.0 - 0.32);//0.6799999999999999
        BigDecimal a2 = new BigDecimal("1.0");
        BigDecimal b2 = new BigDecimal("0.32");
        BigDecimal c2 = a2.subtract(b2);
        System.out.println(c2);
        //乘法multiply
        System.out.println(1.015 * 100);//101.49999999999999
        BigDecimal a3 = new BigDecimal("1.015");
        BigDecimal b3 = new BigDecimal("100");
        BigDecimal c3 = a3.multiply(b3);
        System.out.println(c3);
        //除法divide
        System.out.println(1.301 / 100);//0.013009999999999999
        BigDecimal a4 = new BigDecimal("1.301");
        BigDecimal b4 = new BigDecimal("100");//可以被100除尽 
        BigDecimal c4 = a4.divide(b4);
        System.out.println(c4);//0.01301
        
        BigDecimal a5 = new BigDecimal("1.301");
        BigDecimal b5 = new BigDecimal("101");//无法被101除 无法除尽  将得到无限循环小数  Non-terminating decimal 
        BigDecimal c5 = a5.divide(b5, 2, BigDecimal.ROUND_HALF_DOWN);// 参数scale-保留几位小数    参数roundingMode-保留模式
        System.out.println(c5);//0.01
        
        /*保留模式
        BigDecimal.ROUND_UP  向前加1进位
        BigDecimal.ROUND_DOWN 直接舍去
        BigDecimal.ROUND_HALF_UP  若>=5 则向前加1进位 否则舍去     1.500/100 = 0.02
        BigDecimal.ROUND_HALF_DOWN 若>5 则向前加1进位  否则舍去    1.500/100 = 0.01
        */ 

 

posted @ 2020-05-16 23:47  CherryYang  阅读(199)  评论(0)    收藏  举报