gpt4 book ai didi

java - 为什么 java.Math.BigInteger 在一定限制后会出错?

转载 作者:行者123 更新时间:2023-11-29 09:33:59 25 4
gpt4 key购买 nike

我正在尝试打印 2^n 中 n = 1 到 1000 的数字总和。这是我所做的。

public static void main(String[] args) {
int n = 1000;
for (int i = 1; i < n; i++) {
BigInteger power = BigInteger.valueOf((int)Math.pow(2, i));
int sum = 0;
while (power.intValue() > 0) {
sum += power.intValue() % 10;
power = power.divide(BigInteger.valueOf(10));
}
System.out.print(sum + " ");
}
}

它只工作到大约 2^30 左右,然后打印相同的结果,46,其余的。

我在 C 中使用“long long”尝试了类似的事情,并且在类似的限制后打印了 0。

根据答案,我改了

BigInteger power = BigInteger.valueOf((int)Math.pow(2, i));

BigInteger power = BigInteger.valueOf(2).pow(i);

并且46变成了0。就像C一样。还是不行……

最佳答案

您正在使用 Math.pow 来生成您应该使用 BigInteger 函数来生成的值。

总和应存储在 BigInteger 中,而不是 int。

关于java - 为什么 java.Math.BigInteger 在一定限制后会出错?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18242653/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com