Perché non si possono rappresentare infiniti numeri decimali su un PC (anche i numeri interi sono in numero finito a seconda dei bit che vengono usati, per esempio con 16bit si possono rappresentare solo 65536 numeri interi), quindi l'insieme dei numeri rappresentabili è discreto (in numero finito).

Con gli arrotondamenti si può risolvere la cosa, a te per esempio ti basta 1 cifra decimale, quindi potresti anche fare

round($umidita,1) <= 17

e dovrebbe funzionarti perché il numero che ti ho scritto prima, arrotondato ad una cifra decimale è esattamente 17.0