位于 java.math 包中
作用:精确计算浮点数
创建方式:例如BigDecimal bd = new BigDecimal("1.0");
常用方法:
add();
加subtract();
减multiply();
乘divide();
除示例:
import java.math.BigDecimal;
public class Demo01 {
public static void main(String[] args) {
//未使用BigDecimal
double d1 = 1.0;
double d2 = 0.9;
System.out.println(d1-d2);
double result = (1.4-0.5)/0.9;
System.out.println(result);
System.out.println("----------");
//使用BigDecimal
BigDecimal bd1 = new BigDecimal("1.0");//一定要用字符串:精确
BigDecimal bd2 = new BigDecimal("0.9");
//减法
BigDecimal r1 = bd1.subtract(bd2);//subtract();是BigDecimal的减法
System.out.println("bd1-bd2="+r1);
//加法
BigDecimal r2 = bd1.add(bd2);//add();是BigDecimal的加法
System.out.println("bd1+bd2="+r2);
//乘法
BigDecimal r3 = bd1.multiply(bd2);//multiply();是BigDecimal的乘法
System.out.println("bd1*bd2="+r3);
//除法
BigDecimal r4 = bd2.divide(bd1);//divide();是BigDecimal的除法
System.out.println("bd2/bd1="+r4);
//BigDecimal的 (1.4-0.5)/0.9
BigDecimal result1 = new BigDecimal("1.4")
.subtract(new BigDecimal("0.5"))
.divide(new BigDecimal("0.9"));
System.out.println("(1.4-0.5)/0.9="+result1);
}
}
输出
0.09999999999999998
0.9999999999999999
----------
bd1-bd2=0.1
bd1+bd2=1.9
bd1*bd2=0.90
bd2/bd1=0.9
(1.4-0.5)/0.9=1
除法拓展:
进行除法运算时,如果不能准确的计算出结果时需要指定保留的位数和取舍方式。
除法divide(BigDecimal bd,int scal,RoundingMode mode);
参数 scal :指定精确到小数点后几位
参数 mode :
RoundingMode.HALF_UP
示例:
import java.math.BigDecimal;
import java.math.RoundingMode;
public class Demo02 {
public static void main(String[] args) {
BigDecimal result = new BigDecimal("10")
.divide(new BigDecimal("3"), 2, RoundingMode.HALF_UP);
System.out.println("10/3="+result+"(四舍五入,保留两位小数)");
}
}
输出
10/3=3.33(四舍五入,保留两位小数)
原文:https://www.cnblogs.com/dt746294093/p/14668434.html