输入:
import java.math.BigDecimal;
public class BigDecimalDemo {
final int location=10; //如果没有指定商的保留位数,则默认为10
/**
* 定义加法方法,参数为加数和被加数
* @param value1 第1个加数
* @param value2 第2个加数
* @return 两数之和
*/
public BigDecimal add(double value1,double value2){
//实例化Decimal对象
BigDecimal b1=new BigDecimal(Double.toString(value1));
BigDecimal b2=new BigDecimal(Double.toString(value2));
return b1.add(b2);
}
/**
* 定义减法方法,参数为被减数和减数
* @param value1 被减数
* @param value2 减数
* @return 两数之差
*/
public BigDecimal sub(double value1,double value2){
//实例化Decimal对象
BigDecimal b1=new BigDecimal(Double.toString(value1));
BigDecimal b2=new BigDecimal(Double.toString(value2));
return b1.subtract(b2);
}
/**
* 定义乘法方法,参数为乘数和被乘数
* @param value1 第1个乘数
* @param value2 第2个乘数
* @return 两数之积
*/
public BigDecimal mul(double value1,double value2){
//实例化Decimal对象
BigDecimal b1=new BigDecimal(Double.toString(value1));
BigDecimal b2=new BigDecimal(Double.toString(value2));
return b1.multiply(b2);
}
/**
* 定义除法方法,参数为被除数和除数
* @param value1 被除数
* @param value2 除数
* @param value2 保留位数
* @return 两数之商
*/
public BigDecimal div(double value1,double value2){
return div(value1, value2, location); //第2个参数为商的小数点后的位数,第3个参数为对商进行四舍五入操作
}
/**
* 定义除法方法,参数为被除数,除数和保留位数
* @param value1 被除数
* @param value2 除数
* @param value2 保留位数
* @return 两数之商
*/
public BigDecimal div(double value1,double value2,int b){
if (b<0) System.out.println("保留位数必须大于等于0");
//实例化Decimal对象
BigDecimal b1=new BigDecimal(Double.toString(value1));
BigDecimal b2=new BigDecimal(Double.toString(value2));
return b1.divide(b2,b,BigDecimal.ROUND_HALF_UP); //第2个参数为商的小数点后的位数,第3个参数为对商进行四舍五入操作
}
public static void main(String[] args) {
// 测试
BigDecimalDemo b=new BigDecimalDemo(); //默认构造函数
System.out.println("两个数相加:"+b.add(-99999999999999999999999999d, 9999999999999999999999999999d));
System.out.println("两个数相减:"+b.sub(-99999999999999999999999999d, 9999999999999999999999999999d));
//大整数乘法
System.out.println("两个数相乘:"+b.mul(-99999999999999999999999999d, 9999999999999999999999999999d));
System.out.println("两个数相除,结果保留10位小数:"+b.div(9999999999999999999999999999d, 7));
System.out.println("两个数相除,结果保留5位小数:"+b.div(-99999999999999999999999999d, 7, 5));
}
}
输出: