大数
如果基本的整数和浮点数精度不能满足精度要求,可以使用java.math包中两个类:BigInteger
和BigDecimal
。这两个类能够处理包含任何长度数字序列的数值。
- BigInteger类可以实现任意精度的整数运算
- BigDecimal类可以实现任意精度的浮点数运算
使用静态的valueOf
方法可以将普通的数值转换为大数:
BigInteger a=BigInteger.valueOf(100);
对于更大的数,可以使用一个带字符串参数的构造器:
BigInteger reallyBig=new BigInteger("222345433245665653453498921834839297374743786182847364687");
注意:大数不能用算术运算符(+ - * / )来处理大数,而需要使用大数类中的add和multipy方法
BigInteger add(BigInteger other) 加
BigInteger subtract(BigInteger other) 减
BigInteger multiply(BigInteger other) 乘
BigInteger divide(BigInteger other) 除
BigInteger mod(BigIntegerother)
返回这个大整数和另一个大整数other的和、差、积、商以及余数
BigInteger sqrt() 求这个数的平方根
int compareTo(BigInteger other)
如果这个大整数和另一个大整数other相等,返回0;小于另一个,返回负数;大于,返回正数