Не удалось найти причину следующий фрагмент кода:Понимание поплавок переменной сравнения, если()
#include <stdio.h>
int main()
{
float f = 0.1;
if (f == 0.1)
printf("True");
else
printf("False");
return 0;
}
Выход ложна.
#include <stdio.h>
int main()
{
float f = 0.1;
if (f == (float)0.1)
printf("True");
else
printf("False");
return 0;
}
Теперь отображается правильный результат. В чем причина этого?
Также в чем причина такого поведения.
#include <stdio.h>
main()
{
int n = 0, m = 0;
if (n > 0)
if (m > 0)
printf("True");
else
printf("False");
}
Пожалуйста, никогда не сравнивайте числа с плавающей запятой для равенства. Числа с плавающей точкой почти никогда не сравниваются. – fuz
Дублировать буквально десятки раз. –
.. и тег C открывает сегодняшнее соревнование «раздражающего вопроса» со старой классикой. (кредит: [Martin James] (http://stackoverflow.com/users/758133/martin-james)) –