Сравнивать float
так, словно это int
- опасно, очень опасно. Потому что возможна ситуация, когда они почти равны.
К примеру, есть у нас на проекте ресайзер/обрезчик картинок. Который давал очень всратую багу - иногда рамка, по которой нужно было обрезать изображение, внезапно переводилась в дефолтную позицию. После погружения под капот либы cropper.js, поверх которой был написан компонент, отвечающий за кадрирование изображений, выяснилось, что когда юзер тыкает на рамку кадрирования, та может на самую малость деформироваться.
На считанные доли пикселя.
Проблема в том, что потом эти доли пикселя участвуют в строгом сравнении фактического и предельного допустимого габарита рамки кадрирования. И могут не сойтись.
Сегодня, например, фактический размер составил 450.66, а допустимый - 460.52. Так что или округлять float
-ы перед сравнением, или же сравнивать по относительной разности (когда |x2-x1|/x1 < eps
). Увы и ах, но библиотечка сторонняя, и ее автор не подумал о такой мудрости древних. Так что мне пришлось костылить
P.S.
Этим плохо научение школия говнокодингу на динамически-типированных языках. Только хардкор, только Pascal/Lazarus