`
chaoyi
  • 浏览: 291777 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

大数操作(BigIntger、BigDecimal)

 
阅读更多

本章目标
可以使用BigInteger操作大整数
可以使用BigDecimal指定小数的保留位数

 

BigInteger
如果在操作的时候一个整型数据已经超过了整数的最大类型长度long的话,则此数据就无法装入,所以,此时要使用BigInteger类进行操作。

 

验证BigInteger

import java.math.BigInteger;
public class BigIntegerDemo01 {
	public static void main(String[] args) {
		BigInteger bi1 =new BigInteger("123456789");//定义 BigInteger 对象
		BigInteger bi2 =new BigInteger("987654321");//定义 BigInteger 对象
		System.out.println("加法操作:"+bi2.add(bi1));//加法操作
		System.out.println("减法操作:"+bi2.subtract(bi1));//减法操作
		System.out.println("乘法操作:"+bi2.multiply(bi1));//乘法操作
		System.out.println("除法操作:"+bi2.divide(bi1));//除法操作
		System.out.println("最大数:"+bi2.max(bi1));//求出最大值
		System.out.println("最小数:"+bi2.min(bi1));//求出最小值
		BigInteger result[] = bi2.divideAndRemainder(bi1);//除法操作
		System.out.println("商是:"+result[0]+"; 余数是:"+result[1]);
	}
/* 结果:
 * 加法操作:1111111110
 * 减法操作:864197532
 * 乘法操作:121932631112635269
 * 除法操作:8
 * 最大数:987654321
 * 最小数:123456789
 * 商是:8; 余数是:9
 * */
}

 

 BigDecimal
对于不需要任何准确计算精度的程序可以直接使用float或double完成,但是如果需要精确计算的结果,则必须使用BigDecimal类。

 

 四舍五入

import java.math.BigDecimal;
class MyMath{
	public static double add(double d1, double d2){//进行加法运算
		BigDecimal b1 = new BigDecimal(d1);
		BigDecimal b2 = new BigDecimal(d2);
		return b1.add(b2).doubleValue();
	}
	public static double sub(double d1, double d2){//进行减法运算
		BigDecimal b1 = new BigDecimal(d1);
		BigDecimal b2 = new BigDecimal(d2);
		return b1.subtract(b2).doubleValue();
	}
	public static double mul(double d1, double d2){//进行乘法运算
		BigDecimal b1 = new BigDecimal(d1);
		BigDecimal b2 = new BigDecimal(d2);
		return b1.multiply(b2).doubleValue();
	}
	public static double div(double d1, double d2,int len){//进行除法运算
		BigDecimal b1 = new BigDecimal(d1);
		BigDecimal b2 = new BigDecimal(d2);
		return b1.divide(b2,len,BigDecimal.ROUND_HALF_UP).doubleValue();
	}
	public static double round(double d,  int len){//进行四舍五入运算
		BigDecimal b1 = new BigDecimal(d);
		BigDecimal b2 = new BigDecimal(1);
		//任何一个数字除以 1 都是原数字
		//ROUND_HALF_UP 是 BigDecimal 的一个常量,表示进行四舍五入的操作
		return b1.divide(b2,len,BigDecimal.ROUND_HALF_UP).doubleValue();
	}
}
public class BigDecimalDemo01 {
	public static void main(String[] args) {
		System.err.println("加法运算:"+MyMath.round(MyMath.add(10.345, 3.333),1));
		System.err.println("乘法运算:"+MyMath.round(MyMath.mul(10.345, 3.333),3));
		System.err.println("除法运算:"+MyMath.div(10.345, 3.333,3));
		System.err.println("减法运算:"+MyMath.round(MyMath.sub(10.345, 3.333),3));
	}
/* 结果:
 * 加法运算:13.7
 * 乘法运算:34.48
 * 除法运算:3.104
 * 减法运算:7.012
 * */
}

 

 

 

 

 

  • 大小: 47.9 KB
  • 大小: 56.8 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics