【JavaSE_学习笔记】BigDecimal类与BigInteger类

【JavaSE_学习笔记】BigDecimal类与BigInteger类

BigDecimal类

对于浮点类型的数据,他们的存储和整数的存储是不一样的,是按照有效数字位来进行存储的,浮点类型的数据计算时容易损失精度,计算出的结果不准确,为此Java提供了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)
    参数1:商,参数2:保留几位小数,参数3:舍入的一种模式:ROUND_HALF_UP
举例:

package demotest_BigDecimal;

import java.math.BigDecimal;

public class Demo1 {
    public static void main(String[] args) {
        //创建BigDecimal对象
        BigDecimal bd1 = new BigDecimal("0.01") ;
        BigDecimal bd2 = new BigDecimal("0.09") ;
        System.out.println("add:"+bd1.add(bd2));//add:0.10

        BigDecimal bd3 = new BigDecimal("1.0") ;
        BigDecimal bd4 = new BigDecimal("0.32") ;
        System.out.println("sub:"+bd3.subtract(bd4));//sub:0.68

        BigDecimal bd5 = new BigDecimal("1.501") ;
        BigDecimal bd6 = new BigDecimal("100.0") ;
        System.out.println("mul:"+bd5.multiply(bd6));//mul:150.1000

        BigDecimal bd7 = new BigDecimal("1.301") ;
        BigDecimal bd8 = new BigDecimal("100") ;
        System.out.println("div:"+bd7.divide(bd8));//div:0.01301

        System.out.println("div:"+bd7.divide(bd8, 3, BigDecimal.ROUND_HALF_UP));//div:0.013
        System.out.println("div:"+bd7.divide(bd8, 8, BigDecimal.ROUND_HALF_UP));//div:0.01301000
    }
}

BigInteger类

BigInteger作用:用来计算超出了Integer类型范围的数据
构造方法:
  public BigInteger(String val)将字符串表示的数字封装成BigInteger类型
常用方法:
  public BigInteger add(BigInteger val) 加
  public BigInteger subtract(BigInteger val) 减
  public BigInteger multiply(BigInteger val) 乘
  public BigInteger divide(BigInteger val) 除
  public BigInteger[] divideAndRemainder(BigInteger val)
    返回一个BigInteger数组,数组中的元素:商,余数
举例:

public class BigIntegerDemo2 {

    public static void main(String[] args) {

        //创建BigInteger对象
        BigInteger bg1 = new BigInteger("100") ;
        BigInteger bg2 = new BigInteger("50") ;

        System.out.println("add:"+bg1.add(bg2));

        System.out.println("sub:"+bg1.subtract(bg2));

        System.out.println("mul:"+bg1.multiply(bg2));

        System.out.println("div:"+bg1.divide(bg2));

        BigInteger[] datas = bg1.divideAndRemainder(bg2) ;
        System.out.println("datas[0]:"+datas[0]);//2
        System.out.println("datas[1]:"+datas[1]);//0
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值