gpt4 book ai didi

Java BigInteger 返回错误值

转载 作者:行者123 更新时间:2023-12-01 22:00:31 31 4
gpt4 key购买 nike

我正在尝试使用 BigInteger 生成 n 位数字。

for(int i=0;i<n;i++){
genL = genL.add(BigDecimal.valueOf(Math.pow(10,i)).toBigInteger());
System.out.println(i + " "+ genL);
}

我期待输出结果序列中的所有结果。但我得到以下输出。 i = 23 和 24 时插入零。我遗漏了什么吗?

0 1

1 11

2111

3 1111

4 11111

5 111111

6 1111111

7 11111111

8 111111111

9 1111111111

10 11111111111

11 111111111111

12 1111111111111

13 11111111111111

14 111111111111111

15 1111111111111111

16 11111111111111111

17 111111111111111111

18 1111111111111111111

19 11111111111111111111

20 111111111111111111111

21 1111111111111111111111

22 11111111111111111111111

23 111111111111111101111111

24 1111111111111111101111111

最佳答案

Is there anything I am missing out?

是的。 Math.pow(10,i) 返回一个 double 并且只有 53 位精度。

<小时/>

您可以重写代码以使用 BigInteger.pow 方法。

但是,(IMO)更简单的版本是

genL = BigInteger.ZERO;
for (int i = 0; i < n; i++) {
genL = genL.mult(BigInteger.TEN) + BigInteger.ONE;
System.out.println(i + " " + genL);
}

或者,如果您只关心输出是什么样的,只需使用字符串生成器/字符串连接即可;例如

genL = new StringBuilder();
for (int i = 0; i < n; i++) {
genL.append("1");
System.out.println(i + " " + genL);
}

关于Java BigInteger 返回错误值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58747131/

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