Java中的大胃王--->BigInteger类(大数详解)

BigInteger

概述

1.在java中,有许多处理数字的类,比如说Integer类,但是Integer类却有着一定的局限性。
2. 我们都知道Integer是Int型的包装类,int的表数范围是 -2^31 ~ 2^31-1 。若是我们在显示生活中要描述更大的整数类型时,使用Integer数据类型就无法实现了,所以Java中为我们提供了BigInteger类。
3. BigInteger类型的表数范围较Integer,Long类型的数字范围要大的多。它支持任意精度的整数运算,也就是说在运算中BigInteger类型可以准确地表示任何大小的整数值而不会丢失任何信息。
4. BigInteger提供了所有Java的原始整数运算符和java.lang.Math中所有相关方法的类比。
5. 不可变的任意精度整数。
6. BigInteger的精确计算和庞大容量是因为它的底层是依靠字符串来进行的。
7. BigInteger也被人们亲切的称作大整数,而它的运算就是程序员经常说的大整数运算。

BIgInteger类的常用方法

方法名功能
BIgInteger(String val)构造方法,将十进制字符串转换为BIgInteger
BigInteger(byte[] val)构造方法,将包含二进制补码二进制表达式的字节数组转换为BigInteger
compareTo()比较运算,==返回0 >返回1 <返回-1
BigInteger.valueOf()将long型转化为BigInteger,也就是返回一个等于long的BigInteger数
add()加法
subtract()减法
multiply()乘法
divide()除法
remainder()取余
abs()求绝对值
negate()取反
pow()求幂
doubleValue()将BigInteger转化为double型
floatvalue()将BigInteger转化为float型
toString()返回一个字符串

代码示例

import java.math.BigInteger;

public class BIgIntegerDemo {
    public static void main(String[] args) {
        //构造方法
        String str = "123456789876543212345678765432123456";
        byte [] bytes = {1,11,41,32,41,};
        System.out.println(new BigInteger(bytes));//4482211881
        System.out.println(new BigInteger(str));//123456789876543212345678765432123456

        //创建BigInteger
        BigInteger a = new BigInteger("123");

        //valueOf 将long型转化为BigInteger,也就是返回一个等于long的BigInteger数
        BigInteger b = BigInteger.valueOf(1234567899876543234l);

        //比较运算 compareTo()  ==返回0  >返回1  <返回-1
        BigInteger data1 = new BigInteger("123456");
        BigInteger data2 = new BigInteger("123455");
        System.out.println(data1.compareTo(data2));//1

        //add() 加法
        System.out.println(data1.add(data2));//246911
        //subtract()  减法
        System.out.println(data1.subtract(data2));//1
        //multiply() 乘法
        System.out.println(data1.multiply(data2));//15241260480
        //divide()  除法
        System.out.println(data1.divide(new BigInteger("10")));//12345
        //remainder() 取余
        System.out.println(data1.remainder(a));//87
        //abs() 求绝对值
        System.out.println(new BigInteger("-1234").abs());//1234
        //negate() 取反
        System.out.println(data1.negate());//-123456
        //pow() 求幂
        System.out.println(data1.pow(3));//1881640295202816
        //doublevalue() 转为double
        System.out.println(data1.doubleValue());//123456.0
        //floatValue() 转为float
        System.out.println(data1.floatValue());//123456.0
        System.out.println(data1.intValue());//123456
        //toString()
        System.out.println(data1.toString());//123456
    }
}
  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值