Java快速入门到精通—大数字运算(BigInteger类)

        在Java中提供了用于大数字运算的类,即 java.math.BigInteger 类和 java.math.BigDecimal 类。这两个类用于高精度计算,其中BigInteger 类是针对整型大数字的处理类,而 BigDecimal 类是针对大小数的处理类。今天主要讲一下BigInteger类!

BigInteger 类

        如果要存储比 Integer 更大的数字,Integer 数据类型就无能为力了。因此,Java 中提供 BigInteger 类来处理更大的数字。

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

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

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

BigInteger(String val)

这里的 val 是数字十进制的字符串。例如,要将数字 5 转换为 BigInteger 对象,语句如下:

BigInteger bi = new BigInteger("5")

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

        创建 BigInteger 对象之后,便可以调用 BigInteger 类提供的方法进行各种数学运算操作,下表 列出了 BigInteger 类的常用运算方法。

 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)返回较大的数值

例 1

        编写一个 Java 程序,将用户输入的数字作为 BigInteger 对象,然后调用该对象的各种方法实现加、减、乘、除和其他运算,并输出结果。具体实现代码如下:

import java.math.BigInteger;
import java.util.Scanner;

public class Test09 {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.println("请输入一个整型数字:");
        // 保存用户输入的数字
        int num = input.nextInt();

        // 使用输入的数字创建BigInteger对象
        BigInteger bi = new BigInteger(num + "");

        // 计算大数字加上99的结果
        System.out.println("加法操作结果:" + bi.add(new BigInteger("99")));

        // 计算大数字减去25的结果
        System.out.println("减法操作结果:" + bi.subtract(new BigInteger("25")));

        // 计算大数字乘以3的结果
        System.out.println("乘法橾作结果:" + bi.multiply(new BigInteger("3")));

        // 计算大数字除以2的结果
        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("取 2 次方操作结果:" + bi.pow(2));

        // 计算大数字的相反数
        System.out.println("取相反数操作结果:" + bi.negate());
    }
}

        上述代码将用户输入的整型数字保存到 num 变量中,由于 BigInteger 类的构造方法只接收字符串类型的参数,所以使用“new BigInteger(num+"")”代码来创建 BigInteger 对象。接下来的代码演示了如何调用 BigInteger 类提供的运算方法,运行效果下所示。

请输入一个整型数字:
125
加法操作结果:224
减法操作结果:100
乘法橾作结果:375
除法操作结果:62
取商操作结果:41
取余操作结果:2
取 2 次方操作结果:15625
取相反数操作结果:-125

推荐学习视频

Java基础:

Java300集,Java必备优质视频_手把手图解学习Java,让学习成为一种享受

Java项目:

【Java游戏项目】1小时教你用Java语言做经典扫雷游戏_手把手教你开发游戏

【Java毕业设计】OA办公系统项目实战_OA员工管理系统项目_java开发

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值