文章目录
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;
System.out.println("当前值:" + zeroDecimal);
System.out.println("当前值:" + oneDecimal);
System.out.println("当前值:" + tenDecimal);
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);
输出结果如下