BigDecimal

含义:用来对超过16位有效位的数进行精确的运算

作用:一般常用于银行或计算要求高的

java.lang.Object
  继承者 java.lang.Number
      继承者 java.math.BigDecimal

字段摘要(不怎么常用)

构造方法摘要

常用构造方法:

BigDecimal(String val)

	将 BigDecimal 的**数值**字符串表示形式转换为 BigDecimal
public class BigDecimalDemo {
    public static void main(String[] args) {
        //将数值字符串类型转为BigDecimal
        BigDecimal bigDecimal = new BigDecimal("99.9");
        System.out.println(bigDecimal);//99.9

        //其它构造方法,比如把小数类型double转为BigDecimal
            //【**其它数值**构造方法转BigDecimal不常用,因为本身就已经是数值了】
        BigDecimal bigDecimal1 = new BigDecimal(99.9);
        System.out.println(bigDecimal1);//99.900000000000005684341886080801486968994140625
    }
}

方法摘要

常用方法:

方一

BigDecimal max(BigDecimal val)

	 两个BigDecimal 比较返回**最大**值
public class BigDecimalDemo {
    public static void main(String[] args) {
        //将数值字符串类型转为BigDecimal
        BigDecimal bigDecimal = new BigDecimal("99.9");
        System.out.println(bigDecimal);//99.9

        BigDecimal bigDecimal1 = new BigDecimal("99.99");
        System.out.println(bigDecimal1);//99.9

        BigDecimal max = bigDecimal.max(bigDecimal1);
        System.out.println(max);//99.99  最大值
    }
}

方二

BigDecimal min(BigDecimal val)

 	两个BigDecimal 比较返回**最小**值
public class BigDecimalDemo {
    public static void main(String[] args) {
        //将数值字符串类型转为BigDecimal
        BigDecimal bigDecimal = new BigDecimal("99.9");
        System.out.println(bigDecimal);//99.9

        BigDecimal bigDecimal1 = new BigDecimal("99.99");
        System.out.println(bigDecimal1);//99.9

        BigDecimal min = bigDecimal.min(bigDecimal1);
        System.out.println(min);//99.9  最小值
    }
}

方三

BigDecimal add(BigDecimal augend)

	返回两个BigDecimal之**和**
public class BigDecimalDemo {
    public static void main(String[] args) {
        //将数值字符串类型转为BigDecimal
        BigDecimal bigDecimal = new BigDecimal("99.9");
        System.out.println(bigDecimal);//99.9

        BigDecimal bigDecimal1 = new BigDecimal("99.99");
        System.out.println(bigDecimal1);//99.9

        BigDecimal add = bigDecimal.add(bigDecimal1);
        System.out.println(add);//199.89  之和
    }
}

方四

BigDecimal subtract(BigDecimal subtrahend)

	返回两个BigDecimal之**差**
public class BigDecimalDemo {
    public static void main(String[] args) {
        //将数值字符串类型转为BigDecimal
        BigDecimal bigDecimal = new BigDecimal("99.9");
        System.out.println(bigDecimal);//99.9

        BigDecimal bigDecimal1 = new BigDecimal("99.99");
        System.out.println(bigDecimal1);//99.9

        BigDecimal subtract = bigDecimal1.subtract(bigDecimal);
        System.out.println(subtract);//0.09  之差
    }
}

//【结果可为负】

方五

BigDecimal multiply(BigDecimal multiplicand)

	返回两个BigDecimal之**积**
public class BigDecimalDemo {
    public static void main(String[] args) {
        //将数值字符串类型转为BigDecimal
        BigDecimal bigDecimal = new BigDecimal("2.2");
        System.out.println(bigDecimal);//2.2

        BigDecimal bigDecimal1 = new BigDecimal("5.5");
        System.out.println(bigDecimal1);//5.5

        BigDecimal multiply = bigDecimal.multiply(bigDecimal1);
        System.out.println(multiply);//12.10  之积
    }
}

方六

BigDecimal divide(BigDecimal divisor)

	返回两个BigDecimal之**除**
public class BigDecimalDemo {
    public static void main(String[] args) {
        //将数值字符串类型转为BigDecimal
        BigDecimal bigDecimal = new BigDecimal("6.5");
        System.out.println(bigDecimal);//6.5

        BigDecimal bigDecimal1 = new BigDecimal("3.2");
        System.out.println(bigDecimal1);//3.2

        BigDecimal divide = bigDecimal.divide(bigDecimal1);
        System.out.println(divide);//2.03125  之除
    }
}

//【除不尽会报错:java.lang.ArithmeticException(算术异常)】
//为什么有这个错误,因为除不尽就底层就不知道用什么类型来接收所以会报错

方法多参,针对除不尽时四舍五入
BigDecimal divide(BigDecimal divisor,int 保留的位数,~~static修饰的字段四舍五入模式~~(这里被RoundingMode调用字段所取代类点的方式) )  
public class BigDecimalDemo {
    public static void main(String[] args) {
        //将数值字符串类型转为BigDecimal
        BigDecimal bigDecimal = new BigDecimal("7");
        System.out.println(bigDecimal);//7

        BigDecimal bigDecimal1 = new BigDecimal("3");
        System.out.println(bigDecimal1);//3

        BigDecimal divide = bigDecimal.divide(bigDecimal1, 2, RoundingMode.HALF_UP);
        System.out.println(divide);//2.33  这里没有报ArithmeticException错误是因为设定保留两位并四舍五入了
    }
}

方七

String toString()

	把BigDecimal以字符串形式返回
public class BigDecimalDemo {
    public static void main(String[] args) {
        //将数值字符串类型转为BigDecimal
        BigDecimal bigDecimal = new BigDecimal("8.8");
        System.out.println(bigDecimal);//8.8

        String string = bigDecimal.toString();//返回的字符串
        System.out.println(string+100);//8.8100  【因为返回的是字符串,字符串在+号前所以做拼接】
    }
}

备注:大多成员是没有static修饰的,所以需要对象点成员调用方式使用

谨记:开发中一般很少用小数类型float、double,对于小数或很大的值常用BigDecimal(精度更高)

建议:构造方法中的形参列表是数值字符串(只不过数值基本类型也能运行)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值