在计算机中所有的数字都是通过二进制存储的,而二进制无法准确的表示所有小数,所以使用基本数据类型进行数据计算结果会有一些误差。可以通过BigDecimal实现更精确的小数运算(尤其涉及到金钱,一般都使用BigDecimal来计算)。
常用方法:
加法:public BigDecimal add(BigDecimal augend); 参数说明:augend:与当前对象执行加法的操作数
减法:public BigDecimal subtract(Bigcimal subtrahend); 参数说明:subtrahend被当前对象执行减法的操作数
乘法:public BigDecimal multiply(Bigcimal multiplicand); 参数说明:multiplicand乘法运算中的乘数
除法:public BigDecimal divide(Bigcimal divisor); 参数说明:divisor除法运算中的除数
示例代码:
public class Example3 {
public static void main(String[] args) {
double a = 10;
double b = 9.1;
double result = a - b;
System.out.println("a = " + a);
System.out.println("b = " + b);
System.out.println("非精确计算:a - b = " + result);
// 注意在创建BigDecimal类的实例时,在构造方法中使用数字字符串作为参数,如果直接使用浮点数或者该类型的变量作为参数,经过二进制的存储后得到的结果任然不精确
BigDecimal a1 = new BigDecimal("10");
BigDecimal b1 = new BigDecimal("9.1");
BigDecimal result1 = a1.subtract(b1);
System.out.println("a1 = " + a1);
System.out.println("b1 = " + b1);
System.out.println("精确计算:a - b = " + result1);
}
}
运行结果: