배열 색인을 계산할 때 종종 CGFloat
에서 int
까지 바닥이나 천장이 필요합니다.int에 CGFloat를 안전하게 바닥 또는 천장에 고정시키는 방법은 무엇입니까?
floorf(theCGFloat)
또는 ceilf(theCGFloat)
으로 영구적으로 표시되는 문제는 부동 소수점 부정확성에 문제가있을 수 있다는 것입니다.
내 CGFloat
은 2.0f
이지만 내부적으로는 1.999999999999f
또는 그와 비슷한 것으로 표시됩니다. 나는 floorf
을하고 1.0f
을 얻습니다. 이것은 다시 float입니다. 그런데 또 다른 문제를 야기 할 수있는이 짐승을 int로 던져야합니다.
가장 좋은 방법은 어떻게 바닥이나 천장을 만들다가있는 float
에 int
2.0
같은 실수 실수 2
에 천정이 붙은 만나지 것 2.0
같은 1
무언가에 낭패하지 얻을 않을 것 같은 것을?
이 정답 일 수 없습니다보기 높거나 낮다. 이전 반올림 오류로 인해 값이 너무 높아지고 값이 너무 낮아서 값이 인위적으로 조정되어 선행 오류를 보완하기 때문에 너무 높은 값을 반홖하는 것과 반대로 반홖하는 트레이드 오프가 있습니다. 문맥에 대한 설명이 없으면 단 하나의 정답이 없다. –