我试图得到一些计算结果,但是当x等于零时,它会输出一些奇怪的数字。问题可能是什么?x在输出中的奇怪值
#include <iostream>
#include <math.h>
using namespace std;
void main()
{
const int N = 100;
int i;
double x, h, a = -1.0, b = 1.0, y[N+1];
h = (b - a)/N; //h=0.02
for (i = 0, x = a; i <= N; i++, x += h)
{
if (x == 0) // When x is 0
{
cout << x << '\t' << "0.00" << endl;
continue;
}
y[i] = exp(-x*x);
cout << x << '\t' << y[i] << endl;
}
}
不要使用==比较浮点数 – JGroven
6.17562e-016不是“奇怪的数字”。这是非常小的价值。另一种表示此值的方法是0.000000000000000617562。但它并不那么方便。 – Ilya