BigDecimal 常用方法

BigDecimal 常用方法

1.初始化BigDecimal
        // 初始化BigDecimal,推荐使用字符串创建BigDecimal对象
        public BigDecimal(String val) {};
        public BigDecimal(double val) {};
        public BigDecimal(int val) {};
        public BigDecimal(long val) {};
2.创建BigDecimal对象
		// String
        BigDecimal decimalExample1 = new BigDecimal("1000");
        BigDecimal decimalExample2 = new BigDecimal("20");
        BigDecimal decimalExample3 = new BigDecimal("42834");
        BigDecimal decimalExample4 = new BigDecimal("412");
        BigDecimal decimalExample5 = new BigDecimal("-3413.9654");
        // double
        BigDecimal decimalExample6 = new BigDecimal(312.438);
        // int
        BigDecimal decimalExample7 = new BigDecimal(5438);
        // Long
        BigDecimal decimalExample8 = new BigDecimal(756840324023L);
3.BigDecimal类中定义好的常量
        BigDecimal zeroDecimal = BigDecimal.ZERO;
        BigDecimal oneDecimal = BigDecimal.ONE;
        BigDecimal tenDecimal = BigDecimal.TEN;
        BigDecimal negateOneDecimal = BigDecimal.ONE.negate();
        BigDecimal negateTenDecimal = BigDecimal.TEN.negate();

        System.out.println("当前值zeroDecimal:" + zeroDecimal);
        System.out.println("当前值oneDecimal:" + oneDecimal);
        System.out.println("当前值tenDecimal:" + tenDecimal);
        System.out.println("当前值negateOneDecimal:" + negateOneDecimal);
        System.out.println("当前值negateTenDecimal:" + negateTenDecimal);

输出结果:
在这里插入图片描述

4.BigDecimal 值之间的转换
		double doubleValue = decimalExample6.doubleValue(); // 将BigDecimal转换成double
        int intVal = decimalExample7.intValue(); // 将BigDecimal转换成int
        long longValue = decimalExample8.longValue(); // 将BigDecimal转换成long
5.取当前值的相反数、绝对值、幂函数、保留数值的精度
        // 取当前值的相反数
        BigDecimal negateDecimal = decimalExample1.negate();
        System.out.println("取当前值的相反数:negateDecimal:" + negateDecimal);

        // 取当前值的绝对值
        BigDecimal absDecimal = decimalExample5.abs();
        System.out.println("取当前值的绝对值:absDecimal:" + absDecimal);

        // 求幂函数
        BigDecimal powVal = decimalExample2.pow(2); // 20的2次方
        System.out.println("求幂函数:powVal:" + powVal);

        // 设置当前数值的精度
        // 常用的保留小数的方式 :
        // RoundingMode.HALF_UP:小数位进行四舍五入
        // RoundingMode.HALF_DOWN:小数位五舍六入
        BigDecimal scaleDecimal = decimalExample5.setScale(2, RoundingMode.HALF_UP);
        System.out.println("设置当前数值的精度:scaleDecimal:" + scaleDecimal);

在这里插入图片描述

6.BigDecimal之间的运算:加减乘除方法
        // 两数相加
        BigDecimal addDecimal = decimalExample1.add(decimalExample2);
        System.out.println("两数相加 addDecimal:decimalExample1 + decimalExample2 :" + addDecimal);

        // 两数相减
        BigDecimal subtractDecimal = decimalExample1.subtract(decimalExample2);
        System.out.println("两数相减 subtractDecimal:decimalExample1 - decimalExample1 :" + subtractDecimal);

        // 两数相乘
        BigDecimal multiplyDecimal = decimalExample1.multiply(decimalExample2);
        System.out.println("两数相乘 multiplyDecimal :decimalExample1 * decimalExample1 :" + multiplyDecimal);

        // 两数相除
        BigDecimal divideDecimal = decimalExample1.divide(decimalExample2);
        System.out.println("两数相除 divideDecimal :decimalExample1 / decimalExample1 :" + divideDecimal);

在这里插入图片描述

7.两数相除保留精度
        BigDecimal scaleHalfUpDecimal = decimalExample3.divide(decimalExample4, 5, RoundingMode.HALF_UP);
        BigDecimal scaleHalfDownDecimal = decimalExample3.divide(decimalExample4, 6, RoundingMode.HALF_DOWN);
        System.out.println("两数相除保留向上四舍五入保留5位精度:" + scaleHalfUpDecimal);
        System.out.println("两数相除保留向下五舍六入保留6位精度:" + scaleHalfDownDecimal);

在这里插入图片描述

8.toString、toPlainString方法

1)toString: 对于过小或过大的数值,会转换成科学计数法表示,一般太小的小数会转换成科学计数法
2)toPlainString: 所有数值都以十进制展示,可以把科学计数法表示的数值转换成十进制数值

		BigDecimal decimal1 = new BigDecimal("9809742523");
        // BigDecimal的 toString方法 对于正数一般不会转换成科学计数法
        BigDecimal decimal2 = new BigDecimal("5990000000000000000000000000000");
        // BigDecimal的 toString方法 对于过长的小数会转换成科学计数法的形式
        BigDecimal decimal3 = new BigDecimal("-0.00000000000000000031236834");
        BigDecimal decimal4 = new BigDecimal("0.00000000097831236834");
        BigDecimal decimal5 = new BigDecimal("9.931E12");
        BigDecimal decimal6 = new BigDecimal("-6.752E-9");

        System.out.println("toString方法输出 decimal1 结果:" + decimal1.toString());
        System.out.println("toString方法输出 decimal2 结果:" + decimal2.toString());
        System.out.println("toString方法输出 decimal3 结果:" + decimal3.toString());
        System.out.println("toString方法输出 decimal4 结果:" + decimal4.toString());
        System.out.println("toString方法输出 decimal5 结果:" + decimal5.toString());
        System.out.println("toString方法输出 decimal6 结果:" + decimal6.toString());

        System.out.println("toPlainString方法输出 decimal1 结果:" + decimal1.toPlainString());
        System.out.println("toPlainString方法输出 decimal2 结果:" + decimal2.toPlainString());
        System.out.println("toPlainString方法输出 decimal3 结果:" + decimal3.toPlainString());
        System.out.println("toPlainString方法输出 decimal4 结果:" + decimal4.toPlainString());
        System.out.println("toPlainString方法输出 decimal5 结果:" + decimal5.toPlainString());
        System.out.println("toPlainString方法输出 decimal6 结果:" + decimal6.toPlainString());

输出结果如下
在这里插入图片描述

9.数值比较方法:compareTo、min、max

1) compareTo() : 比较结果以int类型返回
①返回结果 == 1,代表当前对象大于比较对象
②返回结果 == -1,代表当前对象小于比较对象
③返回结果 == 0,代表当前对象等于比较对象
2) min() : 取两个值中的最小值
3) max() : 取两个值中的最大值

        int compareResult1 = BigDecimal.ONE.compareTo(BigDecimal.ONE.negate());  // 1 > -1, compareResult1结果为 1
        int compareResult2 = BigDecimal.ZERO.compareTo(BigDecimal.TEN);          // 0 < 10, compareResult2结果为 -1
        int compareResult3 = BigDecimal.ONE.compareTo(new BigDecimal("1"));  // 1 == 1, compareResult3结果为 0

        System.out.println("输出结果compareResult1:" + compareResult1);
        System.out.println("输出结果compareResult2:" + compareResult2);
        System.out.println("输出结果compareResult3:" + compareResult3);
        
        BigDecimal minVal1 = BigDecimal.ONE.min(BigDecimal.ZERO);
        // 如果当前对象小于等于比较的对象。则取当前对象的值
        BigDecimal minVal2 = BigDecimal.ONE.min(BigDecimal.ONE);

        BigDecimal maxVal1 = BigDecimal.ONE.max(BigDecimal.TEN);
        // 如果当前对象大于等于比较的对象。则取当前对象的值
        BigDecimal maxVal2 = BigDecimal.TEN.max(BigDecimal.TEN);

        System.out.println("输出结果 minVal1:" + minVal1);
        System.out.println("输出结果 minVal2:" + minVal2);
        System.out.println("输出结果 maxVal1:" + maxVal1);
        System.out.println("输出结果 maxVal2:" + maxVal2);

输出结果如下
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值