Q:

Ранжирование не всех чисел float в arange

Есть функция:
f = 9.2
if f in arange(0, 180, 0.01):
    print(f)    

Числа 9.1, 9.3, 9.4, 9.5, 9.6, 9.8, 9.9 - попадают в ранжирование и выводится результат, а числа 9.2 и 9.7 - нет, функция завершается без ошибок но ничего не выводится. Такая же ситуация с числом 6.6 - хотя остальной диапазон от 6.1 и до 6.9 - в ранжирование попадает.
С чем это связано?

A:

Это специфика хранения чисел с плавающей точкой в Python (Numpy):
In [109]: np.arange(9, 10, 0.01)[20]
Out[109]: 9.199999999999996

In [110]: np.arange(9, 10, 0.01)[20] == f
Out[110]: False

для этого в Numpy существует функция np.isclose():
In [111]: np.isclose(np.arange(9, 10, 0.01)[20], f)
Out[111]: True

или более уместное в вашем случае:
In [112]: np.isclose(f, np.arange(0, 180, 0.01)).any()
Out[112]: True

