zoukankan      html  css  js  c++  java
  • 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));

  • 相关阅读:
    刚装上最新node,npm install报这个错误!求ndoe大神解答!!!
    NodeJS、NPM安装配置与测试步骤(windows版本)
    使用vue框架运行npm run dev 时报错解决
    【转】C 语言吧 · 问题资料大全【转】
    动态嵌入式DLL木马病毒的发现及清除
    上班族最致命的十种生活方式
    如何避免重复包含一个头文件?#ifndef #define #endif #Pragma
    VC编程经验汇总
    C++学习重点分析
    关于内存对齐
  • 原文地址:https://www.cnblogs.com/zfsky/p/5965665.html
Copyright © 2011-2022 走看看