Значения с плавающей запятой хранятся в памяти, в отличие от того, что мы делаем на бумаге. Поплавки хранятся в виде степеней 2. Таким образом, 0,5 или 0,25 можно хранить точно, а 0,2 или 0,3 - нельзя.
Вы пытаетесь сравнить два числа с плавающей точкой (sin(d*(PI/180))+1
и 1.5*i/360
. d
в вашем случае (хотя это и есть float) фактически представляется как целое число и хранится точно, а i
- это число с плавающей точкой. Таким образом, левая и правая стороны могут быть приблизительно равными, но действительно равны (очень) редко. Вы можете использовать такую конструкцию:
Количество fabs(arg1-arg2)
и сравните этот результат с требуемым epsylon
(некоторое незначительное значение, которое представляет собой незначительную разницу между аргументами).