BigInteger类
不可变的任意精度整数,在实际操作中,如果处理的数据要比Integer数据类型大就无能为力,因此就有了BigInteger类来处理更大的数字,在运算中 BigInteger 类型可以准确地表示任何大小的整数值。BigInteger类也封装类许多操作,例如绝对值,相反数,是否为素数等操作 。
创建BigInteger对象
BigInteger也有好几种构造方法,最有效的和最常用的就是以字符串的形式创建处理。
BigInteger b=new BigInteger("3499");
BigInteger常用方法
方法名 | 说明 |
---|---|
abs() | 返回BigInteger的绝对值 |
add() | 做加法运算 |
subtract() | 做减法运算 |
multiply() | 做乘法运算 |
negate() | 相反数运算 |
divide() | 做除法运算 |
remainder() | 取余运算 |
divideAndRemainder() | 做除法运算,返回数组,第一个为商,第二个为余数 |
pow() | 做次方运算 |
shiftLeft() | 向左移多少位 |
shiftRight() | 向右移多少位 |
and() | 做与运算 |
or() | 做或运算 |
compareTo() | 两个BigInteger的比较运算 |
equals() | 与object进行比较,相等返回true,反之 |
min() | 返回两个BigInteger最小值 |
max() | 返回两个BigInteger的最大值 |
例子
import java.math.BigInteger;
import java.util.Scanner;
public class dome2{
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
BigInteger b=new BigInteger(String.valueOf(sc.nextInt()));
//加法运算
System.out.println(b.add(new BigInteger("10")));
//做减法运算
System.out.println(b.subtract(new BigInteger("5")));
//做除法运算
System.out.println(b.divide(new BigInteger("2")));
//做乘法运算
System.out.println(b.multiply(new BigInteger("2")));
//取余运算
System.out.println(b.remainder(new BigInteger("4")));
//相反数运算
System.out.println(b.negate());
}
}
输入20的结果
30
15
10
40
0
-20
BigDecimal类
BigDecimal类与BigInteger类差不多,都是求大数字的运算,BigDecimal只不过加入了小数的概念,所以它比float和double类型大得多,支持任何精度的浮点数。
BigDecimal构造方法
BigDecimal也有许多构造方法,也支持直接从基本数据类型传入,例如int,double,float,long,还可以char数组,还可以传入BigInteger对象。
常用的构造方法:
BigDecimal(double val); //将双精度型转换为 BigDecimal 类型。
BigDecimal(String val);将字符串形式转换为 BigDecimal 类型。
BigDecimal方法:
BigDecimal与BigInteger类的方法差不多类似,方法名也相同,在有些方面增添了舍入的方法。
import java.math.BigDecimal;
import java.util.Scanner;
public class dome2{
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
BigDecimal b=new BigDecimal(sc.nextDouble());
//加法运算
System.out.println(b.add(new BigDecimal(3.0)));
//减法运算
System.out.println(b.subtract(new BigDecimal(9.1)));
//乘法运算
System.out.println(b.multiply(new BigDecimal(2.5)));
//除法运算
System.out.println(b.divide(new BigDecimal(5.0)));
//除法运算,保留小数点后4位(先了解即可)
System.out.println(b.divide(new BigDecimal(3.4),4,BigDecimal.ROUND_HALF_UP));
}
}
输入40.0的结果
43
30.9000000000000003552713678800500929355621337890625
100.0
8
11.7647