Почему in_array(1.7, range(0, 2, 0.1)) вернет false?
Числа с плавающей точкой не имеют той точности в двоичном представлении, с которой они визуально выглядят в php в десятичном представлении (даже если указать явно число знаков после запятой). Можно принудительно перевести needle и haystack в строку и попробовать еще раз сравнить.
Есть зарепорченый баг, который описывает эту ситуацию: ссылка
Вы не в математике. а в хранении десятичных чисел чего то не понимаете.
1.7 обычно выглядит как то вроде 1.70000000000000003 или 1.700000000001. Так вот вы сравниваете один вид (1.7) с другим, который в массиве.