大数

如果基本的整数和浮点数精度不能满足精度要求,可以使用java.math包中两个类:BigIntegerBigDecimal。这两个类能够处理包含任何长度数字序列的数值。

  • BigInteger类可以实现任意精度的整数运算
  • BigDecimal类可以实现任意精度的浮点数运算

使用静态的valueOf方法可以将普通的数值转换为大数:

  1. BigInteger a=BigInteger.valueOf(100);

对于更大的数,可以使用一个带字符串参数的构造器:

  1. BigInteger reallyBig=new BigInteger("222345433245665653453498921834839297374743786182847364687");

注意:大数不能用算术运算符(+ - * / )来处理大数,而需要使用大数类中的add和multipy方法

  1. BigInteger add(BigInteger other)
  2. BigInteger subtract(BigInteger other)
  3. BigInteger multiply(BigInteger other)
  4. BigInteger divide(BigInteger other)
  5. BigInteger mod(BigIntegerother)
  6. 返回这个大整数和另一个大整数other的和、差、积、商以及余数
  7. BigInteger sqrt() 求这个数的平方根
  8. int compareTo(BigInteger other)
  9. 如果这个大整数和另一个大整数other相等,返回0;小于另一个,返回负数;大于,返回正数