_screen.brightness = _screen.brightness - 0.1;
이 코드 줄을 사용하면 예기치 않은 결과가 발생할 수 있습니다.
NSLog(@"%.2f", _screen.brightness - 0.1);
명령을 호출하면
-0.00
값이 인쇄됩니다. 이 if (_screen.brightness == 0)
으로 테스트하면 NO
이됩니다.
왜 이런 일이 발생합니까? 변환 문제가 있습니까?CGFloat 빼기 문제
여기 _screen
의 객체의 클래스 내 접근 방법이다 :
- (CGFloat)brightness {
return 1 - _dimmingView.alpha;
}
- (void)setBrightness:(CGFloat)brightness {
if (brightness < self.minValue || brightness > self.maxValue) {
return;
}
_dimmingView.alpha = 1 - brightness;
}
iPhone 프로그래밍으로 졸업 한 적이 있지만 부동 소수점의 부정확성에 대해 결코 알지 못했습니까? Methinks는 아마도 교과서에서 몇 장을 건너 뛰었을 것입니다. –