当前位置: 首页 > 知识库问答 >
问题:

BigInteger没有最大长度吗?如果它有,我如何找到BigInteger DataType的最大长度?

刁冠宇
2023-03-14

当我尝试对BigInteger使用MAX_VALUE时,它给出>>ERROR>>找不到符号变量MAX_VALUE

public class ALL_datatype_length {
    public static void main(String [] args){

        byte a = Byte.MAX_VALUE;
        short b = Short.MAX_VALUE;
        int c = Integer.MAX_VALUE;
        long d = Long.MAX_VALUE;
        float e = Float.MAX_VALUE;
        double f = Double.MAX_VALUE;

        BigInteger g = BigInteger.MAX_VALUE;     //   >> Shows ERROR

        System.out.println(a + "\t\t\t\tMaximum value of byte");
        System.out.println(b + "\t\t\t\tMaximum value of short");
        System.out.println(c + "\t\t\tMaximum value of integer");
        System.out.println(d + "\t\tMaximum value of long");
        System.out.println(e + "\t\t\tMaximum value of float");
        System.out.println(f + "\t\tMaximum value of double");
    }
}

共有1个答案

姚胡媚
2023-03-14

来自Javadoc:类BigInteger

BigInteger必须支持范围为-2Integer.max_value(独占)到+2Integer.max_value(独占)的值,并且可能支持该范围以外的值。当BigInteger构造函数或方法生成的值超出所支持的范围时,将引发一个AlithmeticException。可能素数值的范围是有限的,可能小于BigInteger的完全支持的正范围。范围必须至少为1到2500000000

执行说明:

// Same can be done for the negative value as well
BigInteger twoBigInteger = BigInteger.valueOf(2);
BigInteger intMaxBigInteger = BigInteger.valueOf(Integer.MAX_VALUE);
BigInteger bigInteger = twoBigInteger.pow(intMaxBigInteger.intValue());
System.out.println(bigInteger.intValue());
Exception in thread "main" java.lang.ArithmeticException: BigInteger would overflow supported range
    at java.math.BigInteger.reportOverflow(BigInteger.java:1084)
    at java.math.BigInteger.checkRange(BigInteger.java:1079)
    at java.math.BigInteger.<init>(BigInteger.java:1055)
    at java.math.BigInteger.shiftLeft(BigInteger.java:3174)
    at java.math.BigInteger.pow(BigInteger.java:2339)
    at MyClass.main(MyClass.java:7)

 类似资料:
  • 问题内容: 我试图从表中获取所有列的列表,这些列表包含它们的数据类型,数据长度和该列中最长值的长度。 我使用此SQL来获取列及其数据类型和长度: 我有此SQL,用于获取值的最大长度: 但是我不知道如何将它们结合起来。我正在使用SQL Server 2008。 问题答案: 感谢您的建议。我想出了以下解决方案。它为我获取了我需要的数据,但是希望了解它是否可以提高效率。

  • 问题内容: 当我尝试过时如何设置可以使用swift输入到UITextField中的最大字符数?,我看到如果我全部使用10个字符,我也无法删除该字符。 我唯一能做的就是取消该操作(一起删除所有字符)。 有谁知道如何不遮挡键盘(以便我不能添加其他字母/符号/数字,但可以使用退格键)? 问题答案: 对于Swift 5和iOS 12,请尝试以下协议实现方法的实现: 该代码最重要的部分是从()到()的转换。

  • 配置最大长度为数据存储提供了有关示意,示意其为给定属性使用合适的数据类型。最大长度仅被应用于数组数据类型,比如 string 和 byte[]。 注意 Entity Framework 在将数据传递给数据库提供程序之前不会做最大长度验证。是否合适是由数据库提供程序或数据储存验证的。比如,使用的是 SQL Server 时,超出最大长度将由于底层数据列的数据类型不允许数据超出而导致异常。 惯例 按照

  • 我正在尝试使用递归函数打印列表,该列表具有由我的以下代码产生的列表的最大长度: 我需要将下面的输出传递给找到最大长度的递归函数: 基于我对这个问题答案的理解,我尝试使用以下代码来实现它,但我无法很好地实现递归部分。以下是我的尝试: 注:我需要使用递归来解决最长递增序列的问题。

  • 问题内容: 在这篇文章之后:关于比赛的帖子 我的问题是我有很多行成一行。例如,如果我有10行,字符串约50个字符,我的查询将只显示6-7行或类似的内容。我在堆栈和Google中进行搜索,发现可以通过以下命令更改CONCAT最大长度:。我做错了什么? 编辑: 当我向我显示1024。MySQL版本5.0.96-log。表类型:MyISAM。看起来它没有任何限制,我尝试选择具有2000个字符的简单var

  • 问题内容: 可以为设置最大长度吗?我当时正在考虑使用事件来处理它,但仅在用户开始/完成编辑时才调用它,而在用户键入时不调用它。我也阅读了文档,但还没有找到任何东西。有什么解决方法吗? 问题答案: Paulw11的答案稍短一些: 您只需要一个TextField字符串的包装即可。可以将其视为一个解释器,该解释器每次发生更改时都会得到通知,并且能够将修改发送回TextField。但是,无需使用修饰符创建