Por que
result = static_cast<double>(1 / (i+1))
retorno int
em C++, e por que
result = 1 / (i+static_cast<double>(1))
retorno double
? Especificamente, qual é a carcaça após a +
-operação suficiente para produzir um double
. Por que não é necessário, antes de o +
ou no numerador como assim? É static_cast
a melhor maneira de fundição?
Código:
double harmonic(int n) {
double result = 0;
for (int i = 0; i < n; i++) {
result += 1 / static_cast<double>(i+1);
}
return result;
}