线程“main”中的异常 java.lang.ArithmeticException:BigInteger 将溢出支持的范围

VAI*_*MAL -2 java biginteger

代码图像

import java.math.BigInteger;

public class GaayuProbOne {
    static void power(int N, int P) {
        BigInteger result = new BigInteger("10");
        BigInteger res = result.pow(P);
        System.out.println(res);
    }

    static double power1(int N, int P) {
        double res =Math.pow(N,P);
        return res;
    }

    public static void main(String[] args) {
        int N = 10;
        double P = 25*power1(10,25);
        System.out.println(P);
        int q = (int) P;
        power(N, q);
    }
}
Run Code Online (Sandbox Code Playgroud)

这段代码是java中计算10 25 10 25的程序。
如何计算呢?

线程“主”java 中的异常。郎。算术异常:大整数会溢出支持的范围

有没有在java程序中计算10 25 10 25的方法?

Jon*_*eet 6

注意:自从发布此答案以来,问题发生了很大变化。它最初要求一种计算 10^25 x 10^25 的方法。

该代码有多个问题:

  • 它使用非常规的变量名称 - 不是一个错误,但仍然需要修复
  • power方法忽略了N
  • 您正在无明显原因地执行浮点运算(使用Math.pow
  • 你乘以 25,这在你想要实现的目标中根本不会出现
  • int当 的最大值int仅为 2147483647时,您将一个非常非常大的数字 (25 * 10^25) 投射到
  • 您尝试在最后一行计算 10^2147483647 - 如果没有前面的问题,您将尝试计算 10^(25*10^25),这绝对不是指定的内容

您需要的实际代码要简单得多:

  • 求 10^25,作为BigInteger
  • 乘以它本身

执行此操作的简单代码:

import java.math.BigInteger;

public class Test {
    public static void main(String[] args) {
        int n = 10;
        int p = 25;

        BigInteger tmp = BigInteger.valueOf(n).pow(p);
        BigInteger result = tmp.multiply(tmp);
        System.out.println(result);
    }
}
Run Code Online (Sandbox Code Playgroud)

  • @VAIBHAVNIRMAL:完全改变问题的目的是非常不尊重的。我会要求您恢复更改,然后针对您“实际”想要实现的目标提出一个新问题。首先没有对您发布的内容给予足够的关注,浪费了每个试图帮助您的人的时间,现在的更改使这篇回答*所提出的问题*的帖子无效。 (4认同)