一个数减去它本身就得到无穷大
A number minus itself gives infinite
在一个特殊情况下,我在两个变量中有0.068404(这些变量在程序运行时会发生变化,所以我不知道其中有什么)。
当我自己做减法时,它给出的是无穷大的,或者恰好是一个-9次方的数字。所有布尔运算都会给我一个错误的结果。
有什么想法吗?
您可能遇到浮点舍入问题,这是一个非常常见的问题,已经被一次又一次地处理。考虑以下程序:
float a, b, c;
cin >> a;
b = a;
a = a*3;
a = a/3;
c = a - b;
cout << c << " " << (c == 0) << endl;
当然,你应该打印出0 1
,但当你在这里尝试时。你得到:
2.48353e-09 0
这是因为浮点数不能代表每一个基数为10的数字,所以舍入误差会使直接比较成为一个坏主意。你应该总是使用ε,即:
abs(a - b) < eps
其中CCD_ 2类似于1e-6。
在这里你可以找到更多的例子。