Проблема заключается в неточном представлении типов с плавающей точкой. Поскольку они не могут быть точно представлены как числа с плавающей точкой, вы получаете некоторую потерю точности, в результате которой операции имеют небольшие ошибки. Как правило, с помощью чисел с плавающей точкой вы хотите сравнить, равен ли результат другому значению в некотором небольшом числе (коэффициент ошибки).