目录
16.BigDecimal
16.1.BigDecimal解决什么问题?
public class BigDecimal {
public static void main(String[] args) {
System.out.println(0.1+0.2);//0.30000000000000004
System.out.println(0.3+0.4);//0.7
}
}
- 由于float类型和double类型在运算时可能会有误差,为了实现精确运算需要借助java.math.BigDecimal类加以描述,运算的结果会被封装为一个新的BigDecimal对象并通过return返回,影响参与运算的数据。主要解决java中小数运算有误差问题。
16.2.BigDecimal如何使用
- 构造方法创建BigDecimal对象,参数传递字符串类型的运算数据。
public BigDecimal(String val){
}
- BigDecimal对象调用方法进行运算并将结果封装到新的BigDecimal对象并返回。
- 通过BigDecimal对象调用intValue、doubleValue等方法将结果对象转化成int、double类型。
BigDecimal中常用方法:
public BigDecimal add(BigDecimal augend) 加法运算
public BigDecimal subtract(BigDecimal augend) 减法运算
public BigDecimal multiply(BigDecimal augend) 乘法运算
public BigDecimal divide(BigDecimal augend) 除法运算
package demo12;
import java.math.BigDecimal;
//BigDecimal用法
public class BigDecimalMain {
public static void main(String[] args) {
System.out.println(0.1+0.2);//0.30000000000000004
System.out.println(0.3+0.4);//0.7
BigDecimal b1 = new BigDecimal("0.1");
BigDecimal b2 = new BigDecimal("0.2");
BigDecimal b3 = b1.add(b2);
System.out.println(b3); //0.3
System.out.println(b1);//0.1未变
System.out.println(b2);//0.2未变
//通过BigDecimal对象的intValue,DoubleValue等
//将运算结果(BigDecimal对象)化成Int,double等类型
double v = b3.doubleValue();
System.out.println(v);
int i = b3.intValue();
System.out.println(i);
}
}