当前位置: 代码迷 >> 综合 >> java常用类-3:BigInteger 和BigDecimal
  详细解决方案

java常用类-3:BigInteger 和BigDecimal

热度:66   发布时间:2023-12-14 19:29:57.0

BigInteger 和BigDecimal

  • BigInteger
  • BigDecimal

BigInteger

在 Java 中提供了用于大数字运算的类,即 java.math.BigInteger 类和 java.math.BigDecimal 类。

如果要存储比 Integer 更大的数字就要用 BigInteger 类BigInteger 类型的数字范围较 Integer 类型的数字范围要大得多。BigInteger 支持任意精度的整数,也就是说在运算中 BigInteger 类型可以准确地表示任何大小的整数值。

除了基本的加、减、乘、除操作之外,BigInteger 类还封装了很多操作,像求绝对值、相反数、最大公约数以及判断是否为质数等。

要使用 BigInteger 类,首先要创建一个 BigInteger 对象。BigInteger 类提供了很多种构造方法,其中最直接的一种是参数以字符串形式代表要处理的数字。例如,要将数字 5 转换为 BigInteger 对象,语句如下:

BigInteger bi=new BigInteger("5")

注意:这里数字 5 的双引号是必需的,因为 BigInteger 类构造方法要求参数是字符串类型。

方法名称 说明
add(BigInteger val) 做加法运算
subtract(BigInteger val) 做减法运算
multiply(BigInteger val) 做乘法运算
divide(BigInteger val) 做除法运算
remainder(BigInteger val) 做取余数运算
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 obj) 当参数 obj 是 Biglnteger 类型的数字并且数值相等时返回 true, 其他返回 false
min(BigInteger val) 返回较小的数值
max(BigInteger val) 返回较大的数值

在用户输入的整型数字保存到 num 变量时,由于 BigInteger 类的构造方法只接收字符串类型的参数,所以使用“new BigInteger(num+"")” 代码来创建 BigInteger 对象。

System.out.println("请输入一个整型数字:");//保存用户输入的数字int num=input.nextInt();//使用输入的数字创建BigInteger对象Biglnteger bi=new BigInteger(num+"");

BigDecimal

BigInteger 和 BigDecimal 都能实现大数字的运算,不同的是 BigDecimal 加入了小数的概念。一般的 float 和 double 类型数据只能用来做科学计算或工程计算,但由于在商业计算中要求数字精度比较高,所以要用到 BigDecimal 类。BigDecimal 类支持任何精度的浮点数,可以用来精确计算货币值。

BigDecimal 常用的构造方法如下。

  • BigDecimal(double val):实例化时将双精度型转换为 BigDecimal 类型。
  • BigDecimal(String val):实例化时将字符串形式转换为 BigDecimal 类型。

下面列出了 BigDecimal 类用于实现加、减、乘和除运算的方法。

BigDecimal add(BigDecimal augend) //加法操作
BigDecimal subtract(BigDecimal subtrahend) //减法操作
BigDecimal multiply(BigDecimal multiplieand) //乘法操作
BigDecimal divide(BigDecimal divisor,int scale,int roundingMode ) //除法操作

其中,divide() 方法的 3 个参数分别表示除数、商的小数点后的位数和近似值处理模式。

因为BigDecimal 有接受double的能力,所以不需要特意加上“ ”。

System.out.println("请输入一个数字:");//保存用户输入的数字double num=input.nextDouble();//使用输入的数字创建BigDecimal对象BigDecimal bd=new BigDecimal(num);

上述代码将用户输入的数字保存到 num 变量中,然后调用“newBigDecimal(num)”方法来创建 BigDecimal 对象。

  相关解决方案