我正在从一个教程中学习C++,在那里,我被告知在C++中比较浮点数是非常复杂的。 例如,在下面的代码中:
#include <iostream>
using namespace std;
int main()
{
float decimalNumber = 1.2;
if (decimalNumber == 1.2){
cout << "Equal" << endl;
}else{
cout << "Not equal" << endl;
}
return 0;
}
我会得到“不平等”。 我同意这一点。 导师告诉我们,如果我们需要比较浮动,我们可以使用>; 最接近的数字。 (那不是很精确)。 我在谷歌搜索了不同的比较浮动的方法,我得到了很多复杂的方法。
然后我自己创建了一个程序:
#include <iostream>
using namespace std;
int main()
{
float decimalNumber = 1.2;
if (decimalNumber == (float)1.2){
cout << "Equal" << endl;
}else{
cout << "Not equal" << endl;
}
return 0;
}
在像上面那样的类型转换之后,我得到了“相等”。
我想知道的是,我应该使用上面的方式来比较我所有的程序中的浮动吗? 这有什么缺点吗?
注意:我知道一个数字是如何在内存中精确表示的,以及0.1+0.2!-0.3是如何在另一个SO问题中描述的。 我只想知道,我可以用上面的方式检查两个浮点数的相等吗?