一个数减去它本身就得到无穷大

A number minus itself gives infinite

本文关键字:它本身 无穷大 一个      更新时间:2023-10-16

在一个特殊情况下,我在两个变量中有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。

在这里你可以找到更多的例子。

相关文章: