C++ 函数返回 'inf' 而不是 double
C++ function returning 'inf' instead of double
我有以下计算 n 次谐波数的简单代码。无论我尝试什么,我都会在输出中得到一个 'inf' 值。这怎么可能,即使我所有的变量都是双精度的?
#include <cstdlib>
#include <iostream>
using namespace std;
double harmonic(double n){
double h = 0.0;
while(n >= 0){
h = h + (1.0/n);
n = n-1.0;
}
return(h);
}
int main(int argc, char** argv) {
double n;
cout << "enter an integer: ";
cin >> n;
cout << "The " << n << "th harmonic number is: ";
cout << harmonic(n) << endl;
return 0;
}
想想这个:
while(n >= 0){
h = h + (1.0/n);
n = n-1.0;
}
假设我通过了 n = 0.0
。循环将执行,但 n = 0
因此您正在执行除以零。
inf
是一个特殊的浮点值,例如,由除零产生。后者确实发生在您的程序中:当 n
达到零时,您的循环仍在继续并且您尝试将 1.0
除以零。
将循环更改为 while (n>0)
。
我有以下计算 n 次谐波数的简单代码。无论我尝试什么,我都会在输出中得到一个 'inf' 值。这怎么可能,即使我所有的变量都是双精度的?
#include <cstdlib>
#include <iostream>
using namespace std;
double harmonic(double n){
double h = 0.0;
while(n >= 0){
h = h + (1.0/n);
n = n-1.0;
}
return(h);
}
int main(int argc, char** argv) {
double n;
cout << "enter an integer: ";
cin >> n;
cout << "The " << n << "th harmonic number is: ";
cout << harmonic(n) << endl;
return 0;
}
想想这个:
while(n >= 0){
h = h + (1.0/n);
n = n-1.0;
}
假设我通过了 n = 0.0
。循环将执行,但 n = 0
因此您正在执行除以零。
inf
是一个特殊的浮点值,例如,由除零产生。后者确实发生在您的程序中:当 n
达到零时,您的循环仍在继续并且您尝试将 1.0
除以零。
将循环更改为 while (n>0)
。