BigDecimal类
直接进行运算有误差
public class Test_1 {
public static void main(String[] args) {
double d1=1.0;
double d2=0.9;
System.out.println(d1-d2);//0.09999999999999998
}
}
-
加add()
- BigDecimal r2=bd1.add(bd2);
-
减subtract()
- BigDecimal r1=bd1.subtract(bd2);
-
乘multiply()
- BigDecimal r3=bd1.multiply(bd2);
-
除divide()
-
出的尽(多项式)
//(1.5-1.4)/0.9
BigDecimal r4=new BigDecimal(“1.4”)
.subtract(new BigDecimal(“0.5”))
.divide(new BigDecimal(“0.9”)); -
除不尽
//(自己设置:保留两位小数,四舍五入)
BigDecimal r5=bd1.divide(bd2,2,BigDecimal.ROUND_HALF_UP);
-
-
总代码:
public class Test_1 {
public static void main(String[] args) {
//用字符串构造
BigDecimal bd1=new BigDecimal("1.0");
BigDecimal bd2=new BigDecimal("0.9");
//减法:bd1-bd2:用subtract()
BigDecimal r1=bd1.subtract(bd2);
System.out.println(r1);
//加法:bd1+bd2:用add()
BigDecimal r2=bd1.add(bd2);
System.out.println(r2);
//乘法:multiply()
BigDecimal r3=bd1.multiply(bd2);
System.out.println(r3);
//除法:divide() 除不尽就出现问题,需要确定范围
//(1.5-1.4)/0.9
BigDecimal r4=new BigDecimal("1.4")
.subtract(new BigDecimal("0.5"))
.divide(new BigDecimal("0.9"));
System.out.println(r4);
//除不尽的处理方法(保留两位小数,四舍五入)
BigDecimal r5=bd1.divide(bd2,2,BigDecimal.ROUND_HALF_UP);
System.out.println(r5);
}
}
- 输出结果
0.1
1.9
0.90
1
1.11