2010-12-09 6 views

답변

3

fabs()double (64 비트)을 반환하지만 CGFloatfloat (32 비트)로 정의된다. 일반적으로 double 값을 사용하여 계산을 수행하면 일반적으로 이상이고 float 값을 사용하면 적어도 값이므로 컴파일러 경고를 사용하지 않도록 설정하는 것이 일반적입니다.

+0

"이중 값을 사용하여 계산을 수행하는 것이 보통 float 값을 사용하는 것보다 빠릅니다." ARM에 대해 확신 해? –

+1

ARM은 PowerPC와 비슷한 점이 있습니다. 내가 아는 한, 두 프로세서는 계산을 수행 한 후에 부동 소수점 값을 명시 적으로 "단축"하여 부동 소수점 값을 레지스터에 저장하기 전에 다시 부동 상태로 만들어야합니다. 공간 특성이 더 중요한 곳에서는 성능 특성이 엄지 손가락 코드와 다를 수 있습니다. –

+0

아하, 고마워! 코드에서보기 흉한 CGFloat로 캐스팅하기로 결정했습니다. 그 컴파일러를 경고 한 적이 없습니까? – user7865437

2

더 나은 대답은 #include <tgmath.h>입니다. 이 헤더는 어느 매개 변수 크기에서든 올바른 함수를 호출하는 "적응 형"함수를 정의합니다.

해당 헤더가 포함되어 있으면 경고 메시지를 표시하지 않고 fabs으로 전화하면됩니다 (잘못된 기능 사용으로 인한 정밀도의 손실에 대해서도 걱정할 필요가 없습니다).

관련 문제