BigInteger的用法

文章介绍了Java中的BigInteger类,用于处理超过int和long范围的大整数。通过示例展示了如何利用BigInteger进行加、减、乘、除等操作,以及如何计算阶乘和斐波那契数列,特别地,演示了如何计算大数阶乘求和,解决常规数据类型范围限制的问题。
摘要由CSDN通过智能技术生成

最近在做题的过程中经常遇到大数的阶乘求和,所以想总结一下java中BigInteger的用法

一、BigInteger是什么?

BigInteger是java中的一种包装类,主要用于处理任意精度的整数,处理的数据比int和long大。                                                                                                                                         

二、BigInteger怎么使用

BigInteger提供了基本的运算方法,(add)加、(subtract)减、(multiply)乘、(divide)除、取余等。该构造方法用于将字符串表示的整数转化为BigInteger对象,其参数表示要被转化的字符串形式的整数。如果该字符串包含非数字字符,则会引发NumberFormatException异常。

1.BigInteger对象的创建

1.使用构造器传入String类型参数初始化对象
  new BigInteger(String val)
2.使用valueOf方法传入long类型参数初始化对象
  BigInteger.valueOf(long val)
3.使用字符串转换的方法初始化对象
  BigInteger(String val,int radix)

2.BigInteger中的参数

(1)构造方法的参数:
1.new BigInteger(String val)
该构造方法用于将字符串表示的整数转化为BigInteger对象,其参数表示要被转化的字符串形式的整数。如果该字符串包含非数字字符,则会引发NumberFormatException异常2.BigInteger(String val,int radix)该构造方法用于将给定的字符串按照指定的进制数radix转化为BigInteger对象。其中,第一个参数val是一个字符串形式的整数,第二个参数radix是val中所使用的进制数。

(2)静态方法参数

  • BigInteger.ZERO:BigInteger类的静态常量,表示值为0的BigInteger对象。
  • BigInteger.ONE:BigInteger类的静态常量,表示值为1的BigInteger对象。
  • BigInteger.TEN:BigInteger类的静态常量,表示值为10的BigInteger对象。
  • BigInteger.valueOf(byte[] val):接受一个byte数组参数val,返回一个表示val内容的BigInteger对象。
  • BigInteger.valueOf(byte[] val, int offset, int length):接受三个参数——一个byte数组参数val、一个int类型参数offset和一个int类型参数length,返回一个表示val数组中从offset位置开始、长度为length的内容的BigInteger对象。

3.BigInteger的使用案例

求S=1!+2!+....+n!
这里如果使用常规的int就不行,因为 int的范围是:-2^31——2^31-1,即-2147483648——2147483647
import java.math.BigInteger;
import java.util.Scanner;
public class test {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        int n=sc.nextInt();
        BigInteger sum = BigInteger.ZERO;
        BigInteger fact = BigInteger.ONE;

        for (int i = 1; i <=n; i++) {
            fact = fact.multiply(BigInteger.valueOf(i));
            sum = sum.add(fact);
        }
        System.out.println(sum);
    }
}

求斐波那契数列的案例

import java.math.BigInteger;

public class f_b {
    public static void main(String[] args) {
        BigInteger a=BigInteger.ZERO;
        BigInteger b=BigInteger.ONE;
        for (int i = 1; i <=10; i++) {
            System.out.print(a+" ");
            BigInteger c=a.add(b);
            a=b;
            b=c;
        }
    }
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

星星妳睡了吗

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值