BigInteger
概述
BigInteger类型可以处理比Integer类型大的数据
- 该类支持任意精度的整数
构造方法
- public BigInteger(String val):val是十进制字符串
//将十进制2转换为BigInteger类型
BigInteger bigInteger = new BigInteger("2");
常用方法
- add(BigInteger val):加法
- subtract(BigInteger val):减法
- multiply(BigInteger val):乘法
- divide(BigInteger val):除法
- remainder(BigInteger val):取余
- BigInteger[] divideAndRemainder(BigInteger val):用数组返回余数和商,数组第一个为商,第二为余数
- pow(int exponent):取参数的exponent次方
- negate():取相反数
- shiftLeft(int n):左移n位,如果n位负数,则右移
- shiftRight(int n):右移n位,如果n为负数,则左移
- and(BigInteger val):与操作
- or(BigInteger val):或操作
- compareTo(BigInteger val):比较操作
- equals(Object x):如果x是BigInteger并且数值相等,返回true
- min(BigInteger val)
- max(BigInteger val)
public class Test {
public static void main(String[] args) {
int num = 1;
//创建BigInteger对象
BigInteger bi = new BigInteger(num + "");
//加法
System.out.println(bi.add(new BigInteger("99")));
//减法
System.out.println(bi.subtract(new BigInteger("25")));
//乘法
System.out.println(bi.multiply(new BigInteger("3")));
//除法
System.out.println(bi.divide(new BigInteger("2")));
//除以3的商
System.out.println(bi.divideAndRemainder(new BigInteger("3"))[0]);
// 除以3的余数
System.out.println(bi.divideAndRemainder(new BigInteger("3"))[1]);
//大数字的2次方
System.out.println(bi.pow(2));
//大数字的相反数
System.out.println(bi.negate());
}
}
BigDecimal
概述
BigDecimal加入了小数的概念
构造方法
- public BigDecimal(double val)
- public BigDecimal(String val)
常用方法
- add(BigDecimal augend):加法
- subtract(BigDecimal augend):减法
- multiply(BigDecimal augend):乘法
- divide(BigDecimal divisor, int scale, int roundingMode):除法,三个参数为:除数、商的小数点后的位数、近似处理模式
八种近似处理模式
-
ROUND_UP
商的最后一位如果大于0,则向前进位,无论正负
注意,此舍入模式始终不会减少计算值的大小
-
ROUND_DOWN
商的最后一位无论是什么数字,都省略
注意,此舍入模式始终不会增加计算值的大小
-
ROUND_CEILING
商为正,则舍入行为与 ROUND_UP 相同
商为负,则舍入行为与 ROUND_DOWN 相同
注意,这两种模式的处理都会使近似值大于等于实际值
-
ROUND_FLOOR
商为正,则舍入行为与 ROUND_DOWN 相同
商为负,则舍入行为与 ROUND_UP 相同
注意,这两种模式的处理都会使近似值小于等于实际值
-
ROUND_HALF_UP
对商四舍五入
如果商最后一位小于5,则舍弃
如果大于等于5,进行进位操作,如7.5 ≈ 8
-
ROUND_HALF_DOWN
对商四舍五入
如果商最后一位小于等于5,则舍弃
如果大于5,进行进位操作,如7.5 ≈ 7
-
ROUND_HALF_EVEN
如果商的倒数第二位为奇数,则按照 ROUND_HALF_UP 处理
如果商的倒数第二位为偶数,则按照 ROUND_HALF_DOWN 处理
如 7.5 ≈ 8, 8.5 ≈ 8
注意,在重复进行一系列计算时,此舍入模式可以将累加错误减到最小
此舍入模式也称为“银行家舍入法”,主要在美国使用
-
ROUND_UNNECESSARY:断言请求的操作具有精确的结果,因此不需要舍入
如果对获得精确结果的操作指定此舍入模式,则抛出ArithmeticException
© 著作权归作者所有
发表评论