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