2012-11-14 3 views
3

Sign 함수를 작성했으며 올바른지 여부를 궁금해합니다. (어리석은 질문입니다!)이 문제를 해결하는 가장 좋은 방법인지 여부를 알고 싶습니다. 과제 :Zero-crossing Sign 함수

template<typename T> 
T sign(T n) 
{ 
    if(n < 0) return -1; 
    if(n > 0) return 1; 
    return 0; 
} 

대용량 데이터 집합에 대해 충분한 결과를 얻을 수 있습니까? 누구든지 문제를 볼 수 있습니까? 실제 상황에이 문제를 제기 할 때 발생할 수있는 문제가 있습니까?

감사

+1

가능한 복제본 [C/C++에 표준 sign 함수 (signum, sgn)가 있습니까?] (http://stackoverflow.com/questions/1903954/is-there-a-standard-sign-function-signum) -sgn-in-cc) –

+3

'int'의 리턴 타입으로 더 좋지 않을까요? 현재 당신은'-1'과'1'이'T' 타입으로 변환 가능하다는 것에 의존하고 있습니다. – john

+0

"충분히 정확한 결과"란 무엇을 의미합니까? * 정확한 결과를 제공합니다 (정확하게는 불가능하지만 실제로는 0, 1 및 -1을 나타내는 이상한 유형은 사용하지 않는 한). 얼마나 더 정확합니까? –

답변

4

나는 return n;return 0;을 변경합니다. nNaN 인 경우 sign은 이 아니라 NaN을 반환해야합니다.