您的位置:首页 > 编程语言 > Java开发

BigInteger与BigDecimal高精度计算

2017-11-28 00:00 411 查看
package com.myclass.basicDataType;

import java.math.BigDecimal;
import java.math.BigInteger;
//高精度计算
public class ArithUtils {
/*BigInteger的加减乘除封装*/
public static BigInteger add(Integer num1,Integer num2){
BigInteger results = null;
if(null!=num1&&null!=num2){
BigInteger b1 = new BigInteger(num1.toString());
BigInteger b2 = new BigInteger(num2.toString());
results = b1.add(b2);
}
return results;
}

public static BigInteger substract(Integer num1,Integer num2){
BigInteger results = null;
if(null!=num1&&null!=num2){
BigInteger b1 = new BigInteger(num1.toString());
BigInteger b2 = new BigInteger(num2.toString());
results = b1.subtract(b2);
}
return results;
}

public static BigInteger multiply(Integer num1,Integer num2){
BigInteger results = null;
if(null!=num1&&null!=num2){
BigInteger b1 = new BigInteger(num1.toString());
BigInteger b2 = new BigInteger(num2.toString());
results = b1.multiply(b2);
}
return results;
}

public static BigInteger divide(Integer num1,Integer num2){
BigInteger results = null;
if(null!=num1&&null!=num2){
BigInteger b1 = new BigInteger(num1.toString());
BigInteger b2 = new BigInteger(num2.toString());
results = b1.divide(b2);
}
return results;
}

/*BigDecimal封装*/
public static BigDecimal add(Double num1,Double num2,int scale){
BigDecimal results = null;
if(null!=num1&&null!=num2){
BigDecimal b1 = new BigDecimal(num1.toString()).setScale(scale, scale);
BigDecimal b2 = new BigDecimal(num2.toString()).setScale(scale, scale);
results = b1.add(b2).setScale(scale, scale);
}
return results;
}

public static BigDecimal substract(Double num1,Double num2,int scale){
BigDecimal results = null;
if(null!=num1&&null!=num2){
BigDecimal b1 = new BigDecimal(num1.toString()).setScale(scale, scale);
BigDecimal b2 = new BigDecimal(num2.toString()).setScale(scale, scale);
results = b1.subtract(b2).setScale(scale, scale);
}
return results;
}

public static BigDecimal multiply(Double num1,Double num2,int scale){
BigDecimal results = null;
if(null!=num1&&null!=num2){
BigDecimal b1 = new BigDecimal(num1.toString()).setScale(scale, scale);
BigDecimal b2 = new BigDecimal(num2.toString()).setScale(scale, scale);
results = b1.add(b2).setScale(scale, scale);
}
return results;
}

public static BigDecimal divide(Double num1,Double num2,int scale){
BigDecimal results = null;
if(null!=num1&&null!=num2){
BigDecimal b1 = new BigDecimal(num1.toString()).setScale(scale, scale);
BigDecimal b2 = new BigDecimal(num2.toString()).setScale(scale, scale);
results = b1.add(b2).setScale(scale, scale);
}
return results;
}

public static void main(String[] args) {
System.out.println(ArithUtils.add(123,123));
System.out.println(ArithUtils.add(123.01,123.01,2));
}

/*BigInteger和BigDecimal的其他方法参考JDK helper*/
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java