Java对超大数值的处理

public class BigIntegerTest {

    @Test
    void test(){
        /*传递一个纯数字格式的字符串构造一个BigInteger*/
        BigInteger b1 = new BigInteger("10");
        BigInteger b2 = new BigInteger("2");

        /*或者可以指定一个n进制数格式的字符串
        * 此时字符串中就只能包含0和1*/
        BigInteger b3 = new BigInteger("1010101",2);//进制数有效范围为 2~36,不在此范围内按十进制处理


        /*运算方式*/
        b3 = b1.add(b2);//  b1 + b2
        b3 = b1.subtract(b2);// b1 - b2
        b3 = b1.and(b2);//  b1 & b2
        b3 = b1.mod(b2);//  b1 % b2
        b3 = b1.or(b2);//  b1 | b2
        b3 = b1.xor(b2);//  b1 ^ b2
        b3 = b1.multiply(b2);//  b1 * b2
        b3 = b1.divide(b2);//  b1 / b2
        b3 = b1.shiftLeft(2);//  b1 << 2
        b3 = b1.shiftRight(2);//  b1 >> 2
        b3 = b1.negate();//  -b1
        b3 = b1.abs();//  |b1|
        b3 = b1.pow(2);//  Math.pow(b1.2)


        /*转换为String*/
        String s = b3.toString();//默认转为十进制数
        s = b3.toString(36);//有效范围 2~36,不在此范围内默认按十进制处理



        /*有了BigInteger,便可以计算任意大小的整型数值,而且精度不会丢失*/
        /*来看一下围棋的组合方式有多少种吧
        * 棋盘19*19 总共361个落子点,每个点都有黑,白,无三种选择
        * 所以所有的排列方式就有 3^361种
        * 来看看这个数有多么恐怖吧*/
        b3 = new BigInteger("3").pow(361);
        StringBuilder sb = new StringBuilder(b3.toString());
        int check = sb.length()/4;
        for(int i=1;i<=3;i++){
            sb.insert(check*i,'\n');
        }
        System.out.println(sb);

        /*除次之外还有处理超高精度的BigDecimal 与BigInteger的使用类似
        * 他多了一些处理精度的方法,没有位运算*/

    }
}

在这里插入图片描述
看到这我都懒得去个,十,百,千,万。。。的去数了
这也是为什么说围棋千古无重局的原因了

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值