BigDemical、BigInteger

BigDecimal 由任意精度的整数非标度值 和32 位的整数标度 (scale) 组成。如果为零或正数,则标度是小数点后的位数。如果为负数,则将该数的非标度值乘以 10 的负scale 次幂。因此,BigDecimal表示的数值是(unscaledValue × 10-scale)

    /*
     * 构造方法
     */
    public static void t1(){
        BigDecimal bd1 = new BigDecimal(1);//value:1 scale:0
        System.out.println("value:"+bd1+" scale:"+bd1.scale());
        BigDecimal bd2 = new BigDecimal(1.23);//value:1.229999999999999982236431605997495353221893310546875 scale:51
        System.out.println("value:"+bd2+" scale:"+bd2.scale());
        BigDecimal bd3 = new BigDecimal("2.345");//value:2.345 scale:3
        System.out.println("value:"+bd3+" scale:"+bd3.scale());
    }
    /*
     * BigDecimal的值=unscaledValue × 10(-scale) 
     * 非标度值 x10的负scale次方。
     * 总结: 
     * 非标度值为去掉小数点的值。 
     * scale为小数点后的位数。 
     */
    public static void t2(){
        //正整数  
        //输出值为:23245,scale为:0  
        //23245*10的负0次方=23245  
        //非标度值为23245 ,scale为0  
        BigDecimal bd1 = new BigDecimal("23245");
        System.out.println("value:"+bd1+" scale:"+bd1.scale());
        
         //负整数  
        //输出值为:-13435,scale为:0  
        //-13435*10的负0次方=-13435  
        //非标度值为-13435 ,scale为0  
        BigDecimal bg2=new BigDecimal("-13435");  
        System.out.println("输出值为:"+bg2+",scale为:"+bg2.scale());  
        
    }
    
    /*
     * 舍入模式
     */
    private static void t3(){
        /** 
         * setScale(int i):实际上舍入模式为ROUND_UNNECESSARY 
         * 返回一个 BigDecimal,其标度为指定值,其值在数值上等于此 BigDecimal 的值。 
         * 如果这不可能,则抛出 ArithmeticException。 
         * 此调用通常用于增加标度,在这种情况下,可以保证存在指定标度和正确值的 BigDecimal。 
         * 如果调用方知道 BigDecimal在其小数部分的结尾有足够多的零(即其整数值中的十的因子), 
         * 则该调用也可用于减少标度,以允许重新标度,而不更改其值。 
         */  
        BigDecimal bd1 = new BigDecimal("1.24");
        BigDecimal bd2 = new BigDecimal("-0.02");
        BigDecimal bd3 = new BigDecimal("1.26");
        
        BigDecimal bd5 = bd1.setScale(5);//1.24000
        System.out.println(bd5);
        
        
         /** 
         * ROUND_UP:远离零的舍入模式,直接进位 
         *  
         */  
        bd5 = bd1.setScale(1, BigDecimal.ROUND_UP);//1.3
        System.out.println(bd5);
        
         /** 
         * ROUND_DOWN:接近零的舍入模式,直接舍去 
         */  
        bd5 = bd1.setScale(1, BigDecimal.ROUND_DOWN);//1.2
        System.out.println(bd5);
        
        /** 
         * ROUND_CEILING: 
         * 接近正无穷大的舍入模式。如果 BigDecimal 为正,则舍入行为与 ROUND_UP 相同; 
         * 如果为负,则舍入行为与 ROUND_DOWN 相同。注意,此舍入模式始终不会减少计算值。  
         *  
         */  
        bd5 = bd1.setScale(1, BigDecimal.ROUND_CEILING);//1.3
        System.out.println(bd5);
        bd5 = bd2.setScale(1, BigDecimal.ROUND_CEILING);//0.0
        System.out.println(bd5);
        
         /** 
         * ROUND_HALF_UP 
         * 4舍5入 
         */  
        bd5 = bd1.setScale(1, BigDecimal.ROUND_HALF_UP );//1.2
        System.out.println(bd5);
        bd5 = bd3.setScale(1, BigDecimal.ROUND_HALF_UP );//1.3
        System.out.println(bd5);
        
        //........
    }
    
    /*
     * 加,减,乘,除
     */
    public static void t4(){
        BigDecimal bd1 = new BigDecimal("12.1");
        BigDecimal bd2 = new BigDecimal("3.4");
        
        BigDecimal bd = bd1.add(bd2);//15.5
        System.out.println(bd);
        
        bd = bd1.subtract(bd2);//8.7
        System.out.println(bd);
        
        //除不尽的时候直接调用divide(BigDecimal divisor, int scale, int roundingMode)
        bd = bd1.divide(bd2,2,BigDecimal.ROUND_HALF_UP);//3.56
        System.out.println(bd);
        
        bd = bd1.multiply(bd2);//41.14
        System.out.println(bd);
        
    }

 BigInteger

    public static void t1(){
        
        int a = 1;
        BigInteger b1 = BigInteger.valueOf(a);//int
        
        long b = 2233;
        BigInteger b2 = BigInteger.valueOf(b);//long
        
        //构造函数
        BigInteger b3 = new BigInteger("123432");//String
        
    }
    
    /*
     * 加减乘除等运算...
     */
    public static void t2(){
    
        BigInteger b1 = new BigInteger("2322323424345634522");
        BigInteger b2 = new BigInteger("2324534534556");
        
        BigInteger b;
        
        b = b1.add(b2);//
        System.out.println(b);
        
        b = b1.subtract(b2);//
        System.out.println(b);
        
        b = b1.multiply(b2);//
        System.out.println(b);
        
        b = b1.divide(b2);//
        System.out.println(b);
        
        b = b1.pow(6);//a^b
        
        /*
         * gcd();   最大公约数
         * abs(); 绝对值
         * negate();取反数
         * .mod(); a.mod(b)=a%b=a.remainder(b);
         * max(); min();
         * punlic int comareTo();
         * boolean equals(); 是否相等
         */
        
    }

转载于:https://www.cnblogs.com/wkcode/p/9085338.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值