使用Bigdecimal进行浮点型数据运算
代码输出可见,double,float都会导致运算出现误差,故使用Bigdecimal
public class ABigDecimal {
public static void main(String[] args) {
aFloat aFloat = new aFloat();
aFloat.aFloat();
ABigDecimal aBigDecimal = new ABigDecimal();
aBigDecimal.aDouble();
aBigDecimal.aBigDecimal();
}
public void aDouble(){
double a = 0.65;
double b = 0.6;
double c = a-b;
System.out.println(c);
}
public void aBigDecimal(){
BigDecimal b1 = new BigDecimal(Double.toString(1.2));
BigDecimal b2 = BigDecimal.valueOf(0.6);
BigDecimal b3 = BigDecimal.valueOf(-0.6);
BigDecimal bigDecimal = new BigDecimal(1000);
BigDecimal bigDecimal2 = new BigDecimal("1000");
System.out.println("加:"+b1.add(b2));
// System.out.println(b1.add(b2).doubleValue());
System.out.println("减:"+b1.subtract(b2));
System.out.println("乘:"+b1.multiply(b2));
System.out.println("除:"+b1.divide(b2));
System.out.println("绝对值:"+b3.abs());
System.out.println(bigDecimal.multiply(b1));
System.out.println(bigDecimal2.multiply(b1));
}
}
class aFloat{
void aFloat(){
float a = 0.65f;
float b = 0.6f;
float c = a-b;
System.out.println(c);
}
}
出现了差异,这也是为什么初始化建议使用string的原因