BigInteger和BigDecimal

BigInteger和BigDecimal是大型数字(通常在金融、工程、科学等等领域使用)

大型整数:BigInteger

大型浮点数:BigDecimal

创建时,通常使用”字符串“传入”原始值“

常见运算

  • 加法:add()
  • 减法:subtract()
  • 乘法:multiply()
  • 除法:divide()
  • 幂运算:pow()
  • 比较:compareTo()

使用BigInteger保存"超大整数"

import java.math.BigInteger;
public class Test {
	public static void main(String[] args) {
	//整数类型溢出
//	int n1 = 214748647,n2 = 214748647;
//	int sum1 = n1+n2;
//	System.out.println(sum1);
//	//使用BigInteger保存"超大整数"
	BigInteger n1 = new BigInteger("32748356705238748959");
	BigInteger n2 = new BigInteger("32748356705238748958");
	//通过调用方法,进行:"加减乘除"运算
	//加法
	BigInteger sum = n1.add(n2);
	System.out.println(sum);
	//减法
	BigInteger sub = n1.subtract(n2);
	System.out.println(sub);
	//乘法
	BigInteger mul = n1.multiply(n2);
	System.out.println(mul);
	//除法
	BigInteger div = n1.divide(n2);
	System.out.println(div);
	//混合运算:n1*n2+n3
	BigInteger n3 = new BigInteger("1000");
	BigInteger ret = n1.multiply(n2).add(n3);
	System.out.println(ret);
	}
}

如果使用int会溢出

65496713410477497917
1
1072454866893555729136867484550184834722
1
1072454866893555729136867484550184835722

使用BigDecimal保存"超大浮点数"

浮点数的除法运算,容易产生无限循环

import java.math.BigDecimal;
import java.math.RoundingMode;
public class Test {
	public static void main(String[] args) {
		BigDecimal dec1 = new BigDecimal("10.0");
		BigDecimal dec2 = new BigDecimal("3.0");
		BigDecimal sum = dec1.add(dec2);
		System.out.println(sum);
		// 浮点数的除法运算,容易产生无限循环
		// 参数1: 被除数
		// 参数2: 保留3位小数
		// 参数3: 小数位数的截取保留方式
		BigDecimal div = dec1.divide(dec2,3,RoundingMode.HALF_DOWN);
		System.out.println(div);
		
	}
}

//RoundingMode.HALF DOWN代表四舍五入

13.0
3.333

你可能感兴趣的:(开发语言,java)