大数

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

  • 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;小于另一个,返回负数;大于,返回正数