나눗셈 은 조심해 야 한다.

7523 단어
전환 하 다 http://42.96.169.71/blog/2013/03/10/chu-fa-yun-suan-yao-xiao-xin/
나눗셈 연산 은 우리 가 일상적인 개발 업무 에서 자주 사용 하 는 조작 이다.간단 해 보 이 는 조작 이지 만 코드 를 쓸 때 주 의 를 기울 이지 않 으 면 골 치 아 플 수도 있다.
대학 에서 프로 그래 밍 에 관 한 수업 에서 선생님 은 기본적으로 0 을 제외 한 문 제 를 언급 하고 NaN 값 으로 돌아 간 다 는 것 을 기억 해 야 한다.약간의 개발 경험 이 있 으 면 우 리 는 이 문제 에 대해 더욱 깊이 이해 할 것 이다.
여기 서 여러분 에 게 아주 간단 한 예 를 들 어 저희 가 iOS 응용 프로그램 을 개발 하면 저 희 는 각 View 의 크기 와 사 이 즈 를 계산 합 니 다. 여 기 는 나눗셈 을 자주 사용 합 니 다.
1
someView.frame = CGRectMake(100.0f,100.0f,200.0f,200.0f); 

위의 코드 는 iOS 개발 을 한 모든 학생 들 이 사용 할 것 이 라 고 믿 습 니 다.이렇게 간단 해 보 이 는 조작 이지 만 주 의 를 기울 이지 않 으 면 심각 한 문 제 를 일 으 킬 수 있다.
예 를 들 어 우 리 는 항상 산수 연산 에 따라 동적 으로 View 의 frame 을 설정 하고 예 를 들 어 보 여 준다.
1
2
3
4
5
6
CGFloat division;  .... ....  someView.frame = CGRectMake(100.0f,100.0f, division, division); 

우리 가 간단히 보 니 무슨 잘못 이 있 는 지 발견 하지 못 한 것 같다.그러나 주의해 야 할 것 은, 우 리 는 이번에 division 이라는 부동 소수점 변 수 를 이용 하여 이 View 의 frame 을 만 들 었 지만, division 이라는 변수 에 저 장 된 것 이 무엇 인지 확정 할 수 없습니다.
상기 코드 는 컴 파일 러 를 통 해 순조롭게 검 측 될 수 있 지만 이 변수 에 NaN 값 이 저장 되 어 있 으 면 우리 의 응용 이 무 너 질 것 입 니 다.그리고 이런 붕괴 문 제 는 디 버 깅 하기 어렵 고 100% 재현 되 기도 쉽 지 않다.
만약 이것 에 대해 주 의 를 기울 이지 않 는 다 면 이런 상황 은 우리 의 응용 에서 발생 할 가능성 이 매우 크다.예 를 들 어 우 리 는 가끔 하나의 수치 로 특정한 View 의 너 비 를 나 누 어 다른 View 의 너 비 를 계산한다. 그러나 공교롭게도 첫 번 째 View 의 너비 가 0 이 라면 계산 한 것 은 NaN 값 이다.또한 암시 적 형식 변환 을 거치 지 않 으 면 이 NaN 값 이 두 번 째 보기 로 바로 전달 되 고 응용 프로그램 이 즉시 무 너 집 니 다.
본인 은 이 문제 에 대해 오랫동안 곤 혹 스 러 워 해 야 했 기 때문에 여기에 써 서 여러분 의 디 버 깅 프로그램의 시간 을 절약 하고 여러분 에 게 도움 이 되 기 를 바 랍 니 다.

좋은 웹페이지 즐겨찾기