zoukankan      html  css  js  c++  java
  • java-BigInteger类,和BigDecimal类

    1.

     double和float类型在运算中很容易丢失精度,造成数据的不准确性,Java提供我们BigDecimal类可以实现浮点数据的高精度运算

    四则运算

    public class BigDecimalDemo {
        public static void main(String[] args) {
            function_1();
        }
        /*
         * BigDecimal实现除法运算
         * divide(BigDecimal divisor, int scale, int roundingMode) 
         * int scale : 保留几位小数
         * int roundingMode : 保留模式
         * 保留模式 阅读API文档
         *   static int ROUND_UP  向上+1
         *   static int ROUND_DOWN 直接舍去
         *   static int ROUND_HALF_UP  >= 0.5 向上+1
         *   static int ROUND_HALF_DOWN   > 0.5 向上+1 ,否则直接舍去
         */
        public static void function_1(){
            BigDecimal b1 = new BigDecimal("1.0301");
            BigDecimal b2 = new BigDecimal("100");
            //计算b1/b2的商,调用方法divied
            BigDecimal bigDiv = b1.divide(b2,2,BigDecimal.ROUND_HALF_UP);//0.01301
            System.out.println(bigDiv);
        }
        
        /*
         *  BigDecimal实现三则运算
         *  + - *
         */
        public static void function(){
            BigDecimal b1 =  new BigDecimal("0.09");
            BigDecimal b2 =  new BigDecimal("0.01");
            //计算b1+b2的和,调用方法add
            BigDecimal bigAdd = b1.add(b2);
            System.out.println(bigAdd);
            
            BigDecimal b3 = new BigDecimal("1");
            BigDecimal b4 = new BigDecimal("0.32");
            //计算b3-b2的差,调用方法subtract
            BigDecimal bigSub = b3.subtract(b4);
            System.out.println(bigSub);
            
            BigDecimal b5 = new BigDecimal("1.015");
            BigDecimal b6 = new BigDecimal("100");
            //计算b5*b6的成绩,调用方法 multiply
            BigDecimal bigMul = b5.multiply(b6);
            System.out.println(bigMul);
        }
    }
    /*
    * 计算结果,未知
    * 原因: 计算机二进制中,表示浮点数不精确造成
    * 超级大型的浮点数据,提供高精度的浮点运算, BigDecimal
    System.out.println(0.09 + 0.01);//0.09999999999999999
    System.out.println(1.0 - 0.32);//0.6799999999999999
    System.out.println(1.015 * 100);//101.49999999999999
    System.out.println(1.301 / 100);//0.013009999999999999 
    */

    2.

    java中long型为最大整数类型,对于超过long型的数据如何去表示呢.在Java的世界中,

    超过long型的整数已经不能被称为整数了,它们被封装成BigInteger对象.

    在BigInteger类中,实现四则运算都是方法来实现,并不是采用运算符.

    /*
     *  超级大的整数运算
     *    超过long取值范围整数,封装成BigInteger类型的对象
     */
    public class BigIntegerDemo {
        public static void main(String[] args) {
            function_1();
        }
        /*
         * BigInteger对象的四则运算
         * 调用方法计算,计算结果也只能是BigInteger对象
         */
         public static void function_1(){
             BigInteger b1 = new BigInteger("5665464516451051581613661405146");
             BigInteger b2 = new BigInteger("965855861461465516451051581613661405146");
             
             //计算 b1+b2对象的和,调用方法 add
             BigInteger bigAdd = b1.add(b2);//965855867126930032902103163227322810292
             System.out.println(bigAdd);
             
             //计算b1-b2对象的差,调用方法subtract
             BigInteger bigSub = b1.subtract(b2);
             System.out.println(bigSub);
             
             //计算b1*b2对象的乘积,调用方法multiply
             BigInteger bigMul = b1.multiply(b2);
             System.out.println(bigMul);
             
             //计算b2/b1对象商,调用方法divied
             BigInteger bigDiv = b2.divide(b1);
             System.out.println(bigDiv);
         }
        
        /*
         * BigInteger类的构造方法
         * 传递字符串,要求数字格式,没有长度限制
         */
        public static void function(){
            BigInteger b = new BigInteger("8465846668464684562385634168451684568645684564564");
            System.out.println(b);
            BigInteger b1 = new BigInteger("5861694569514568465846668464684562385634168451684568645684564564");
            System.out.println(b1);
        }
  • 相关阅读:
    无声的吐槽csdn
    成长
    最近忙的头发都油油的
    pycharm5工具免费分享及安装教程
    分布式版本控制git常见问题之gitignore冲突
    感觉自己还是太年轻,还有很多东西不会
    关于laravel5.2仓库的建立,以及简单调用
    乎,前所未有的挑战!
    嘿嘿,无聊的时候,来点好玩的,翻滚吧,杀马特!!!
    随便说说
  • 原文地址:https://www.cnblogs.com/zimo-bwl1029-s/p/9338665.html
Copyright © 2011-2022 走看看