BigInteger类,BigDecimal类,超大数字的运算与精度

 BigInteger类

 	可以让超过Integer范围内的数据进行运算
 	不可变的任意精度的整数。

 java.lang.Object
 ——java.lang.Number
——————java.math.BigInteger



public BigInteger(String val)
	将 BigInteger 的十进制字符串表示形式转换为 BigInteger。
	该字符串表示形式包括一个可选的减号,后跟一个或多个十进制数字序列。
	字符到数字的映射由 Character.digit 提供。该字符串不能包含任何其他字符(例如,空格)。 
	参数:
	val - BigInteger 的十进制字符串表示形式。 


public BigInteger add(BigInteger val)
	返回其值为 (this + val) 的 BigInteger。 
	参数:
	val - 将添加到此 BigInteger 中的值。 
	返回:
	this + val


public BigInteger subtract(BigInteger val)
	返回其值为 (this - val) 的 BigInteger。 
	参数:
	val - 从此 BigInteger 中减去的值。 
	返回:
	this - val


public BigInteger multiply(BigInteger val)
	返回其值为 (this * val) 的 BigInteger。 
	参数:
	val - 要乘以此 BigInteger 的值。 
	返回:
	this * val

public BigInteger divide(BigInteger val)
	返回其值为 (this / val) 的 BigInteger。 
	参数:
	val - 此 BigInteger 要除以的值。 
	返回:
	this / val 


public BigInteger[] divideAndRemainder(BigInteger val)
	返回包含 (this / val) 后跟 (this % val) 的两个 BigInteger 的数组。 
	参数:
	val - 此 BigInteger 要除以的值和计算所得的余数。 
	返回:
	两个 BigInteger 的数组:商 (this / val) 是初始元素,余数 (this % val) 是最终元素。 


public class f {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		BigInteger bi1 = new BigInteger("100");
		BigInteger bi2 = new BigInteger("2");
		BigInteger[] arr = bi1.divideAndRemainder(bi2);	//取除数和余数
		for (int i = 0; i < arr.length; i++) {
			System.out.println(arr[i]);//50 0
		}
	}
}


BigDecimal类

不可变的、任意精度的有符号十进制数
* 由于在运算的时候,float类型和double很容易丢失精度,演示案例。
* 所以,为了能精确的表示、计算浮点数,Java提供了BigDecimal

java.lang.Object
——java.lang.Number
————java.math.BigDecimal



构造
public BigDecimal(BigInteger val)
	将 BigInteger 转换为 BigDecimal。BigDecimal 的标度是零。 
public BigDecimal(String val)
	将 BigDecimal 的字符串表示形式转换为 BigDecimal。

public class g {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		System.out.println(2.0 - 1.1);
		
		BigDecimal bd1 = new BigDecimal(2.0);//这种方式在开发中不推荐,因为不够精确
		BigDecimal bd2 = new BigDecimal(1.1);
		System.out.println(bd1.subtract(bd2));
		
		BigDecimal bd3 = new BigDecimal("2.0");//通过构造中传入字符串的方式,开发时推荐
		BigDecimal bd4 = new BigDecimal("1.1");
		System.out.println(bd3.subtract(bd4));
		
		BigDecimal bd5 = BigDecimal.valueOf(2.0);//这种方式在开发中也是推荐的
		BigDecimal bd6 = BigDecimal.valueOf(1.1);
		System.out.println(bd5.subtract(bd6));
	}

}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值