Мне часто нужно установить пол или потолок от CGFloat
до int
для вычисления индекса массива.
Проблема, которую я постоянно вижу с floorf(theCGFloat)
или ceilf(theCGFloat)
, заключается в том, что могут быть проблемы с неточностями с плавающей запятой.
Так что, если мой CGFloat
— это 2.0f
, но внутренне он представлен как 1.999999999999f
или что-то в этом роде. Я делаю floorf
и получаю 1.0f
, который снова является числом с плавающей запятой. И все же я должен привести этого зверя к int, что может создать еще одну проблему.
Существует ли наилучшая практика, как установить пол или потолок от float
до int
таким образом, чтобы что-то вроде 2.0
никогда случайно не достигло пола до 1
, а что-то вроде 2.0
никогда случайно не достигло потолка 2
?