使用前提:业务中,基本的整数和浮点数不能满足需求,使用java.math包中的两个类:BigInteger和BigDecimal。这两个类可以处理包含任何长度数字序列的数值。
BigInteger 类实现了任意精度的整数运算。BigDecimal实现了任意精度的浮点数运算。
使用静态valueOf方法可以将普通的数值转换为大数值。
BigInteger a = BigInteger.valueOf(100)
注意:不能使用算数运算符(*、+、/.等)处理大数据。需要使用大数据类中的add和multiply
BigInteger c = a.add(b);//c = a + b
BigInteger d = c.multiply(b.add(BigInteger.valueOf(2))); //d = c * (b+2)
API
BigInteger add(BigInteger other)
BigInteger subtract(BigInteger other)
BigInteger multiply(BigInteger other)
BigInteger divide(BigInteger other)
BigInteger mod(BigInteger other)
返回这个大整数和另一个大整数other的和、差、积、商以及余数。
-int compareTo(BigInteger other)
如果这个大整数与另一个大整数other相等,返回0,如果这个大整数小于另一个大整数other,返回负数,否则返回正数。
- static BigInteger valueOf(long x)
返回值等于x的大整数。
BigDecimal add(BigDecimal other)
BigDecimal subtract(BigDecimal other)
BigDecimal multiply(BigDecimal other)
BigDecimal divide(BigDecimal other,RoundingMode mode) 5.0
返回这个大实数与另一个大实数other的和、差、积、商。要想计算商,必须给出舍入方式(rounding mode)。RoundingMode.HALF_UP是在学校中学习的四舍五入方式(即,数值0到4舍去,数值5到9进位)。其他查看API
int compareTo(BigDecimal other)
如果大实数与另一个相等,返回0.如果这个大实数小于另一个,返回负数,否则返回正数。
static BigDecimal valueOf(long x)
static BigDecimal valueOf(long x,int scale)
返回值为x或x/10^scale的一个大实数。