java biginteger 比较大小,java – 打印非常大的BigIntegers

我试图找出与

Java 7 x64中的BigIntegers相关的以下问题.我试图计算一个极高功率的数字.代码如下,然后是问题描述.

import java.math.BigInteger;

public class main {

public static void main(String[] args) {

// Demo calculation; Desired calculation: BigInteger("4096").pow(800*600)

BigInteger images = new BigInteger("2").pow(15544);

System.out.println(

"The number of possible 16 bpc color 800x600 images is: "

+ images.toString());

}

}

我遇到打印此操作结果的问题.当此代码执行时,它会打印消息,但不会打印images.toString()的值.

为了隔离问题,我开始计算2的幂,而不是在该行的注释中列出的所需计算.在我测试过的两个系统上,2 ^ 15544是触发问题的最小计算; 2 ^ 15543工作正常.

我没有接近达到主机系统的内存限制,我不相信我甚至接近VM限制(无论如何运行VM参数-Xmx1024M -Xms1024M都没有效果).

在互联网上寻找答案之后,我开始怀疑我在BigInteger或String中遇到限制,这些限制与这些类型用于内部数据存储的数组的最大大小(Integer.MAX_VALUE)有关.如果问题出现在String中,我认为可以扩展BigInteger并编写一个一次喷出几个字符的打印方法,直到整个BigInteger被打印出来,但我宁愿怀疑问题出在其他地方.

感谢您抽出宝贵时间阅读我的问题.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Java中的BigInteger类可以用于处理大整数,包括比较大小比较大小可以使用compareTo()方法,该方法返回一个整数值,表示两个BigInteger对象的大小关系。如果当前对象小于参数对象,则返回负数;如果当前对象等于参数对象,则返回;如果当前对象大于参数对象,则返回正数。例如: BigInteger a = new BigInteger("123456789"); BigInteger b = new BigInteger("987654321"); int result = a.compareTo(b); if(result < ) { System.out.println("a小于b"); } else if(result == ) { System.out.println("a等于b"); } else { System.out.println("a大于b"); } 输出结果为:“a小于b”。 ### 回答2: Java中的BigInteger是一个可以处理大整数的类,它可以处理任意位数的整数计算, 并且支持大数的加减乘除运算。当需要对非常大的整数进行操作时,使用BigInteger比使用int或long类型更加方便和安全。但是,由于BigInteger是一个对象类型,所以在比较大小时需要使用compareTo方法。 compareTo方法是定义在Comparable接口中的方法,接受一个BigInteger类型参数,返回一个int类型值,用来判断两个BigInteger大小关系,如下: - 如果该BigInteger实例小于指定的对象,则返回负整数。 - 如果该BigInteger实例等于指定的对象,则返回零。 - 如果该BigInteger实例大于指定的对象,则返回正整数。 下面是一个比较两个BigInteger大小的示例: BigInteger a = new BigInteger("123456789"); BigInteger b = new BigInteger("987654321"); if(a.compareTo(b) == 0){ System.out.println("a等于b"); }else if(a.compareTo(b) < 0){ System.out.println("a小于b"); }else{ System.out.println("a大于b"); } 在这个例子中,我们使用compareTo方法比较了两个BigInteger实例a和b的大小。如果a等于b,则输出"a等于b"。如果a小于b,则输出"a小于b"。如果a大于b,则输出"a大于b"。 通过这个例子可以看出,使用compareTo方法可以方便地比较两个BigInteger实例的大小关系,这对于处理大数问题非常有用。 ### 回答3: Java中的BigInteger类是一种可以存储任意长度整数的数据类型。因为它可以存储非常大的数值,所以比较它们的大小可能比较困难,下面介绍一下如何进行比较BigInteger类中提供了几种方法用来比较BigDecimal对象的大小,如compareTo,equals和intValue。下面重点讲解compareTo方法。 compareTo方法是比较两个BigInteger对象的大小,它的返回值有3种情况,分别为0、1、-1。如果两个BigInteger对象的值相等,则返回0;如果第一个BigInteger对象的值大于第二个,就返回1;如果第一个小于第二个,就返回-1。下面是compareTo方法的语法: public int compareTo(BigInteger o) 其中,o是需要进行比较BigInteger对象。比较两个对象时,可以使用如下的示例代码: BigInteger a = BigInteger.valueOf(10L); BigInteger b = BigInteger.valueOf(20L); int result = a.compareTo(b); 其中,a和b分别是两个BigInteger对象,result是比较结果。在这个例子中,因为b的值比a大,所以result的值为-1。 如果想比较两个BigInteger对象的绝对值大小,还可以使用abs方法,如下所示: BigInteger a = BigInteger.valueOf(10L); BigInteger b = BigInteger.valueOf(-20L); int result = a.abs().compareTo(b.abs()); 在这个例子中,a.abs()和b.abs()分别是a和b两个对象的绝对值,然后比较它们的大小。 要点回顾: - BigInteger类是一种可以存储任意长度整数的数据类型; - compareTo方法是比较两个BigInteger对象的大小,返回值有3种情况:0、1、-1; - abs方法可以比较两个对象的绝对值大小
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值