Несмотря на ваш заголовок, нет никакого сравнения с любым значением int
.
num == 1.2
сравнивает значение float
в num
со значением double
1.2
.
Когда 1.2
преобразуется в double
в вашей реализации C, он преобразуется в ближайшее представимое значение. Так как ваша реализация C использует двоичную систему для плавающей запятой, она не может точно представлять 1.2, и в преобразовании есть небольшая ошибка.
В float num1 = 1.2;
, в результате получается значение double
из 1.2
снова преобразуется, на этот раз в float
. Поскольку float
имеет меньшую точность, чем double
, ошибка еще выше. В результате float
num1
не равно двойному 1.2
.
Таким образом, сравнение num1 == 1.2
оценивается как ложное.