java.math包中有两个很有用的类,分别是BigInteger和BigDecimal,这两个类可以处理任意长度的数值。BigInteger类实现了任意精度的整数运算,BigDecimal类实现了任意精度的浮点数运算。如果要将任何普通的整型数值转为大数值,可以通过BigInteger.valueOf(100)将long类型的100转为BigInteger类型的100。同样的,如果要将任何普通的浮点型数值转为大数值,可以通过BigDecimal.valueOf(3.14)将double类型的3.14转为BigDecimal类型的3.14。
需要注意的是,大数值无法像普通的基本类型数值一样,使用常见的加、减、乘、除符号进行运算。想要用大数值运算,需要调用类(BigInteger或BigDecimal)中的特定的运算方法,加(add)、减(substract)、乘(multiply)、除(divide)。如果要判断大数值是否等于0,也不能直接用==符号来判断,而要使用compareTo(),对于a.compareTo(b),其中a、b都是大数值,如果a大于b,则返回1;如果a小于b,则返回-1;如果a等于b,则返回0。只要将其中的b换成BigDecimal.ZERO,那么就可以比较a是否等于0。
大数值对于是否相等,除了上面的compareTo(),也可以使用equals()方法,如果a.equals(BigDecimal.ZERO),如果a等于0,那么就返回true,否则返回false。