我试图找到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。
那么,任何人都可以在代码中解释该部分的重要性吗?
感谢任何帮助。
答案 0 :(得分:4)
代码digits.charAt(i)
为您提供数字的ASCII代码。因此,如果您查看ASCII table,您会看到字符7
的值为55,字符0
的值为48.如果从中减去0
7
,你会得到7,这是你正在寻找的数字。
答案 1 :(得分:1)