BigDecimal类
BigDecimal类
package inner;
public class Demo07 {
public static void main(String[] args) {
double d1=1.0;
double d2=0.9;
System.out.println(d1-d2);//0.09999999999999998
double result=(1.4-0.5)/0.9;
System.out.println(result);//0.9999999999999999
}
}
很多实际应用中需要精确运算,而double是近似值存储,不再符合要求,需要借助BigDecimal。
- 位置:java.math包中。
- 作用:精确计算浮点数。
- 创建方式:BigDecimal bd=new BigDecimal("1.0")。
package inner;
import java.math.BigDecimal;
public class Demo07 {
public static void main(String[] args) {
double d1=1.0;
double d2=0.9;
System.out.println(d1-d2);//0.09999999999999998
double result=(1.4-0.5)/0.9;
System.out.println(result);//0.9999999999999999
//BigDecimal
BigDecimal bd1=new BigDecimal("1.0");
BigDecimal bd2=new BigDecimal("0.9");
//类中做运算不能再用运算符,要调用subtract 减法
BigDecimal r1=bd1.subtract(bd2);
System.out.println(r1);//0.1
//加法
BigDecimal r2=bd1.add(bd2);
System.out.println(r2);//1.9
//乘法
BigDecimal r3=bd1.multiply(bd2);
System.out.println(r3);//0.90
//除法
BigDecimal r4=new BigDecimal("1.4")
.subtract(new BigDecimal("0.5"))
.divide(new BigDecimal("0.9"));
System.out.println(r4);//1
//除不尽的情况
BigDecimal r5=new BigDecimal("10")
.divide(new BigDecimal("3"),2,BigDecimal.ROUND_HALF_UP);//四舍五入
System.out.println(r5);//3.33
}
}
除法:divide(BigDecimal bd,int scal,RoundingMode mode)
参数scal:指定精确到小数点后几位。
参数mode:
- 指定小数部分的取舍模式,通常采用四舍五入的模式。
- 取值为BigDecimal.ROUND_HALF_UP。

浙公网安备 33010602011771号