Можно создать дубликат:
strange output in comparision of float with float literal
Why comparing double and float leads to unexpected result?Есть ли 3.5 и 3.5f то же самое в C++?
В следующий код я ожидал ответа быть "не равно", потому что по умолчанию 3.5
должен быть в C++ double
, но результат был «равным».
Какая разница в объявлении float a=3.5f
и float a=3.5
?
#include<iostream>
using namespace std;
int main()
{
float a=3.5;
if(a==3.5)
cout<<"equal"<<endl;
else
cout<<"Not equal"<<endl;
return 0;
}
Попробуйте создать двойной и плавающий, которые равны 1.0/3.0, а затем увидите, если они равны. Вы обнаружите, что это не так. – Benj
Да, Бенй, я понял. То, что вы хотите сказать, это не одинаковые из-за точности. –
при сравнении значений с плавающей запятой для равенства Я всегда использую: fabs (v1-v2)
marcinj