java - 大整数的数字总和

标签 java biginteger

我试图找到 BigInteger 的数字总和,并找到了这段代码。

BigInteger big = BigInteger.valueOf(2).pow(1000);
String digits = big.toString();
int sum = 0;

for(int i = 0; i < digits.length(); i++) {
    int digit = (int) (digits.charAt(i) - '0');
    sum = sum + digit;
}

System.out.println(sum);

我不明白为什么在代码的第6行添加- '0'

int digit = (int) (digits.charAt(i) - '0');

如果我删除该部分,它会给我一个错误的答案。

例如,不带 - '0' 的 16 位数之和给出的答案是 103,而不是 7。

那么,谁能解释一下代码中该部分的重要性吗?

感谢任何帮助。

最佳答案

代码 digits.charAt(i) 为您提供该数字的 ASCII 代码。因此,如果您查看 ASCII table ,您将看到字符 7 的值为 55,字符 0 的值为 48。如果从 中减去 0 >7,您将得到 7,这是您要查找的数字。

关于java - 大整数的数字总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41727278/

相关文章:

java - 在android中改变方向的问题

java - 无法单击 JFrame 中的 JButton

java - 在 Java 中使用什么路径来加载图像之类的东西?

javascript - JS从字符串中解析出错误的数字

java - 尽管使用 Long 原始类型和大整数,但大斐波那契数列的整数溢出

java - 我可以将 Java BigInteger 提升为 double/float 幂吗?

java - 绘制图形太慢

java - 如何删除 apache axis 2 消息响应的字符编码

将大整数转换为十进制字符串

c - 按位算术教程