繁体   English   中英

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

[英]Exception in thread "main" java.lang.ArithmeticException: BigInteger would overflow supported range

代码图像

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);
    }
}

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

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

有什么方法可以在 java 程序中计算 10 25 10 25吗?

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

代码有多个问题:

  • 它使用非常规的变量名称 - 不是错误,但仍有待修复
  • power法忽略N的值
  • 您无缘无故地执行浮点运算(使用Math.pow
  • 你乘以 25,这在你试图实现的目标中没有发生
  • int的最大值仅为 2147483647 时,您将一个非常非常大的数字 (25 * 10^25) 转换为int
  • 您尝试在最后一行计算 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);
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM