数字BigInteger的总和

时间:2017-01-18 18:55:12

标签: 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。

那么,任何人都可以在代码中解释该部分的重要性吗?

感谢任何帮助。

2 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:1)

例如,如果您从'5'获取digits.getCharAt(i)

'5' - '0' = ?

根据ASCII table可以翻译为:

53 - 48

这是5,它是您正在寻找的结果