• BigIntager类和BigDecimal类


    BigInteger类

    BigInteger:可以让超过Integer范围内的数据进行运算

    构造方法:
          BigInteger(String val)

          代码示例:BigInteger bi = new BigInteger("2147483648");

    成员方法:

         (1)public BigInteger add(BigInteger val):加
         (2)public BigInteger subtract(BigInteger val):减
         (3)public BigInteger multiply(BigInteger val):乘
         (4)public BigInteger divide(BigInteger val):除
         (5)public BigInteger[] divideAndRemainder(BigInteger val):返回商和余数的数组


                 代码示例:

                      BigInteger bi1 = new BigInteger("100");

                      BigInteger bi2 = new BigInteger("50");

                      System.out.println("add:" + bi1.add(bi2));

                      System.out.println("subtract:" + bi1.subtract(bi2));

                      System.out.println("multiply:" + bi1.multiply(bi2));

                      System.out.println("divide:" + bi1.divide(bi2));

                      BigInteger[] bis = bi1.divideAndRemainder(bi2);

    BigDecimal类

    这么段代码:

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

          我们能看到,程序结果与预想的结果不同。这是因为float类型和double类型数据的的存储和整数不一样导致。大部分时候,它们都是带有有效数字位。

    由于在运算时候,float类型和double类型数据很容易丢失精度,为了能够精确的表示、计算浮点数,Java提供了BigDecimal类。

    BigDecimal类:不可变的、任意精度的有符号十进制数,可以解决数据丢失问题。

          注意:BigDecimal类,一般用在金融项目等对数据精度要求严格的场景

    构造方法:
          public BigDecimal(String val)

    成员方法:
          public BigDecimal add(BigDecimal augend):加
          public BigDecimal subtract(BigDecimal subtrahend):减
          public BigDecimal multiply(BigDecimal multiplicand):乘
          public BigDecimal divide(BigDecimal divisor):除
          public BigDecimal divide(BigDecimal divisor,int scale,int roundingMode):除,

                 三个参数的意义:除数;小数的位数;取舍的标准,一般使BigDecimal.ROUND_HALF_UP

          代码示例:

                BigDecimal bd1 = new BigDecimal("0.09");
                BigDecimal bd2 = new BigDecimal("0.01");
                System.out.println("add:" + bd1.add(bd2));
                System.out.println("------------------------");

                BigDecimal bd3 = new BigDecimal("1.0");
                BigDecimalbd4 = new BigDecimal("0.32");
                System.out.println("subtract:" + bd3.subtract(bd4));
                System.out.println("------------------------");

                BigDecimal bd5 = new BigDecimal("1.015");
                BigDecimal bd6 = new BigDecimal("100");
                System.out.println("multiply:" + bd5.multiply(bd6));
                System.out.println("-----------------------");

                BigDecimal bd7 = new BigDecimal("1.301");
                BigDecimal bd8 = new BigDecimal("100");
                System.out.println("divide:" + bd7.divide(bd8));
                System.out.println("divide:"+ bd7.divide(bd8, 3, BigDecimal.ROUND_HALF_UP));

  • 相关阅读:
    【LeetCode OJ】Remove Element
    【LeetCode OJ】Remove Duplicates from Sorted Array
    【LeetCode OJ】Swap Nodes in Pairs
    【LeetCode OJ】Merge Two Sorted Lists
    【LeetCode OJ】Remove Nth Node From End of List
    【LeetCode OJ】Two Sum
    【LeetCode OJ】Majority Element
    最长公共子序列问题
    php fopen与file_get_contents的区别
    PHP 技巧集合
  • 原文地址:https://www.cnblogs.com/zfsky/p/5965665.html
Copyright © 2020-2023  润新知