2011-03-28 8 views
1

내 아이폰은 다음과 같습니다 코드의 라인을 가지고있다. 그러나 decimal2는 현재 -82입니다.절대 값이 작동하지 않습니다

누구든지 설명 할 수 있습니까? 난 decimal2의 가치에 다른 어떤 일도하지 않을 것이다.

감사합니다.

답변

4

당신이 적절 -1 다음 곱하기 0으로 수를 비교하기 위해 NSDecimalNumber 클래스의 내장 함수를 사용할 수 NSDecimalNumber

를 사용하는 것이 좋습니다 것입니다. 예를 들어이 경우

- (NSDecimalNumber *)abs:(NSDecimalNumber *)num { 
    if [myNumber compare:[NSDecimalNumber zero]] == NSOrderedAscending) { 
     // Number is negative. Multiply by -1 
     NSDecimalNumber * negativeOne = [NSDecimalNumber decimalNumberWithMantissa:1 
                      exponent:0 
                     isNegative:YES]; 
     return [num decimalNumberByMultiplyingBy:negativeOne]; 
    } else { 
     return num; 
    } 
} 

, 정밀

2

아마도이 "abs"기능은 당신이 생각하는 바가 아닙니다. 어디에서 왔는지 알고 계십니까? 어쩌면 너 또는 다른 누군가가 너 자신을 정의했을거야? 유효한 "abs"기능이이 작업을 수행하는 이유는 없습니다.

+0

예제 코드를 빌리고 있습니다. 그러나 절대 값 기능을 어떻게 조작 할 수 있었는지 나는 알지 못합니다. – rottendevice

2

당신은 int를 돌려 복근() 함수를 사용하지만 이중에 결과를 할당하고의 손실이 없습니다. 결과를 int 유형의 변수에 지정하거나 double을 반환하는 절대 값 함수 버전 인 double fabs(double)을 사용해야합니다.

관련 문제