我试图找到 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。如果从 中减去
,您将得到 7,这是您要查找的数字。 0
>7
关于java - 大整数的数字总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41727278/