BigDecimal
看一下这个程序,猜猜结果会是多少
public class demo4 {
public static void main(String[] args) {
double a = 1.0;
double b = 0.9;
System.out.println(a-b);
}
}
编译结果
0.09999999999999998
很多实际应用中需要精确运算,而double是近似值存储,不存在符合要求,需要借助BigDecimal。
package test;
import java.math.BigDecimal;
public class demo4 {
public static void main(String[] args) {
double a = 1.0;
double b = 0.9;
double result = (1.4 - 0.5)/0.9;
System.out.println(a-b);
System.out.println(result);
BigDecimal bd1 = new BigDecimal("1.0");
BigDecimal bd2 = new BigDecimal("0.9");
//精确减法
BigDecimal res1 = bd1.subtract(bd2);
System.out.println(res1);
//加法
BigDecimal res2 = bd1.add(bd2);
System.out.println(res2);
//乘法
BigDecimal res3 = bd1.multiply(bd2);
System.out.println(res3);
//除法,无法除尽的数会导致报错所以添加了两个参数,一个是设置位数和设置四舍五入。
BigDecimal res4 = bd1.divide(bd2, 4, BigDecimal.ROUND_HALF_UP);
System.out.println(res4);
}
}
编译结果
0.09999999999999998
0.9999999999999999
0.1
1.9
0.90
1.1111