package com.cc.Day10Homework;
import java.math.BigDecimal;
public class Homework03 {
public static void main(String[] args) {
double a1 = 2.333;
double a2 = 2.444;
System.out.println("普通计算:" + (a1+a2));
System.out.println("BigDecimal计算:" + Calc.Add(a1, a2));
System.out.println("普通计算:" + (a1-a2));
System.out.println("BigDecimal计算" + Calc.Sub(a1, a2));
System.out.println("普通计算:" + (a1*a2));
System.out.println("BigDecimal计算:" + Calc.Mul(a1, a2));
System.out.println("普通计算:" + (a1/a2));
System.out.println("BigDecimal计算:" + Calc.Div(a1, a2));
//计算结果仿照电脑计算器
}
}
//做一个计算器类,对浮点数进行 加减乘除的精确运算
class Calc{
//定义除法规模
public static final int DEF_DIV_SCALE = 15;
//加法
public static double Add(double a,double b) {
BigDecimal a1 = new BigDecimal(Double.toString(a));
BigDecimal a2 = new BigDecimal(Double.toString(b));
return a1.add(a2).doubleValue();
}
//减法
public static double Sub(double a,double b) {
BigDecimal a1 = new BigDecimal(Double.toString(a));
BigDecimal a2 = new BigDecimal(Double.toString(b));
return a1.subtract(a2).doubleValue();
}
//乘法
public static double Mul(double a,double b) {
BigDecimal a1 = new BigDecimal(Double.toString(a));
BigDecimal a2 = new BigDecimal(Double.toString(b));
return a1.multiply(a2).doubleValue();
}
//除法(精确到小数点后面十五位)
public static double Div(double a,double b) {
BigDecimal a1 = new BigDecimal(Double.toString(a));
BigDecimal a2 = new BigDecimal(Double.toString(b));
return a1.divide(a2,DEF_DIV_SCALE,BigDecimal.ROUND_HALF_UP).doubleValue();
}
}