数字总和 BigInteger
Sum Of Digits 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,这就是你要找的数字。
例如,如果您从 digits.getCharAt(i)
中获取 '5'
:
'5' - '0' = ?
根据ASCII table可以翻译为:
53 - 48
这是 5,这就是您要查找的结果
我试图找到 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,这就是你要找的数字。
例如,如果您从 digits.getCharAt(i)
中获取 '5'
:
'5' - '0' = ?
根据ASCII table可以翻译为:
53 - 48
这是 5,这就是您要查找的结果