加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

【Java常用类库】_大数操作(BigIntger、BigDecimal)

发布时间:2021-01-20 16:24:34 所属栏目:大数据 来源:网络整理
导读:Ref: http://www.voidcn.com/article/p-cjboaawb-g.html 本章方针: 可以行使 BigInteger操纵大整数 大数据操纵。正常环境下一个整数只能放在long范例之中,可是假云云刻有如下的一个数字: 22222222222222222222222222222222222222222222222222222222222222

Ref: http://www.voidcn.com/article/p-cjboaawb-g.html

本章方针:
可以行使 BigInteger操纵大整数

大数据操纵。正常环境下一个整数只能放在long范例之中,可是假云云刻有如下的一个数字:
222222222222222222222222222222222222222222222222222222222222222222222222222222221

基础就无法生涯的,所觉得了办理这样的题目,在java中引入了两个大数的操纵类:

操纵整数:BigInteger
操纵小数:BigDecimal

3.1、BigInteger

假如在操纵的时辰一个整形数据已经高出了整数的最大范例长度long的话,则此数据就无法装入,以是,此时要行使BigInteger类举办操纵。

    import java.math.BigInteger ;  
    public class BigIntegerDemo01{  
        public static void main(String args[]){  
            BigInteger bi1 = new BigInteger("123456789") ;    // 声明BigInteger工具  
            BigInteger bi2 = new BigInteger("987654321") ;    // 声明BigInteger工具  
            System.out.println("加法操纵:" + bi2.add(bi1)) ;    // 加法操纵  
            System.out.println("减法操纵:" + bi2.subtract(bi1)) ;    // 减法操纵  
            System.out.println("乘法操纵:" + bi2.multiply(bi1)) ;    // 乘法操纵  
            System.out.println("除法操纵:" + bi2.divide(bi1)) ;    // 除法操纵  
            System.out.println("最大数:" + bi2.max(bi1)) ;     // 求出最大数  
            System.out.println("最小数:" + bi2.min(bi1)) ;     // 求出最小数  
            BigInteger result[] = bi2.divideAndRemainder(bi1) ;    // 求出余数的除法操纵  
            System.out.println("商是:" + result[0] +  
                ";余数是:" + result[1]) ;  
        }  
    };  

3.2、BigDecimal

行使此类可以完成大的小数操纵,并且也可以行使此类举办准确的四舍五入,这一点在开拓中常常行使。

对付不必要任何精确计较精度的措施可以直接行使float或double完成,可是假如必要准确计较的功效,则必需行使BigDecimal类。

    import java.math.* ;  
    class MyMath{  
        public static double add(double d1,double d2){        // 举办加法计较  
            BigDecimal b1 = new BigDecimal(d1) ;  
            BigDecimal b2 = new BigDecimal(d2) ;  
            return b1.add(b2).doubleValue() ;  
        }  
        public static double sub(double d1,double d2){        // 举办减法计较  
            BigDecimal b1 = new BigDecimal(d1) ;  
            BigDecimal b2 = new BigDecimal(d2) ;  
            return b1.subtract(b2).doubleValue() ;  
        }  
        public static double mul(double d1,double d2){        // 举办乘法计较  
            BigDecimal b1 = new BigDecimal(d1) ;  
            BigDecimal b2 = new BigDecimal(d2) ;  
            return b1.multiply(b2).doubleValue() ;  
        }  
        public static double div(double d1,double d2,int len){        // 举办乘法计较  
            BigDecimal b1 = new BigDecimal(d1) ;  
            BigDecimal b2 = new BigDecimal(d2) ;  
            return b1.divide(b2,len,BigDecimal.ROUND_HALF_UP).doubleValue() ;  
        }  
        public static double round(double d,int len){    // 举办四舍五入  
            BigDecimal b1 = new BigDecimal(d) ;  
            BigDecimal b2 = new BigDecimal(1) ;  
            return b1.divide(b2,BigDecimal.ROUND_HALF_UP).doubleValue() ;  
        }  
    };  
      
    public class BigDecimalDemo01{  
        public static void main(String args[]){  
            System.out.println("加法运算:" + MyMath.round(MyMath.add(10.345,3.333),1)) ;  
            System.out.println("减法运算:" + MyMath.round(MyMath.sub(10.345,3)) ;  
            System.out.println("乘法运算:" + MyMath.round(MyMath.mul(10.345,2)) ;  
            System.out.println("除法运算:" + MyMath.div(10.345,3.333,3)) ;  
        }  
      
    };  

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读