Цикл while с числами с плавающей запятой

#include<stdio.h>
void main()
{
 float x=1.1;
 while(x==1.1)
 {
     printf("\n%f",x);
     x=x-0.1;
 }
}

Я узнал, что цикл while может также включать числа с плавающей запятой, но приведенная выше программа не показывает никакого вывода. Почему это так ?


person Aksh    schedule 17.01.2018    source источник
comment
Подсказка: 1.1 это double, а не float. Остерегайтесь неявных преобразований.   -  person Carl Norum    schedule 17.01.2018
comment
== почти бесполезен для типов с плавающей запятой.   -  person Christian Gibbons    schedule 17.01.2018
comment
@dbush: Пожалуйста, не помечайте вопросы с плавающей запятой как дубликат этого вопроса . У чисел с плавающей запятой есть множество свойств и функций, которые можно задавать индивидуально и отвечать на них. Исходный код этого вопроса практически идентичен этот вопрос, который является намного более подходящим оригиналом.   -  person Eric Postpischil    schedule 18.01.2018
comment
Предполагая двоичную арифметику с плавающей запятой IEEE 754, x является ближайшим 32-битным приближением к 1.1, 1.10000002384185791015625. 1.1 является ближайшим 64-битным приближением к 1.1, 1.1000000000000000088817841970012523233890533447265625. Они не равны.   -  person Patricia Shanahan    schedule 18.01.2018
comment
@EricPostpischil Не только исходный код, сам вопрос тот же. Похоже, у обоих плакатов была одинаковая домашняя работа.   -  person Bob__    schedule 18.01.2018
comment
@Bob__: 1.1 популярен: 1, 2, 3, 4.   -  person Eric Postpischil    schedule 18.01.2018