2008-10-03 7 views

답변

13

당신은 문제가 될 수 있습니다.

+0

댕 - (1에서는, Math.sin (/ N /) *) -1 */

// 아니면 그냥이

Math.round을 할 수하여 곱 15 초 : P – davr

+0

감사합니다, jaja .. 나는 n == 0에 대해 생각하지 않았습니다. : P –

+0

이것은 아름다운 코드 조각입니다. –

2

또한이 작업을 수행 할 수 있습니다 :

var sign = (n>=0)?1:-1; 

ternary operator로 알려진 것을 사용하여 n 개의 == 0 ... 어떻게 약이 경우

8

n이 0이면 오류가 발생합니다.

무력 방법 : 전화 번호는 31 비트에 들어가는 경우

function sign(num) { 
    return (num > 0) ? 1 : ((num < 0) ? -1 : 0); 
} 
+0

나는 두 번째 접근법을 좋아하는데, 훨씬 더 깨끗하며 n이 0 일 가능성을 다룬다. –

+0

0의 부호는 + 0이 아니므로 : return (num <0)? -1 : 1; 답변 해 주셔서 감사합니다. –

0

다음 사용할 수 있습니다 : 조건 연산자에 대한 사랑은 그들을위한

function sign(num) { 
    if(num > 0) { 
    return 1; 
    } else if(num < 0) { 
    return -1; 
    } else { 
    return 0; 
    } 
} 

또는

var sign = 1 + 2*(n >> 31); 

이것이 더 빨라지면 흥미로울 것입니다! 내가 물려받은 코드에서

0

발췌문 :

function getSign(number:int):int { 
    var tmp:String = new String(number); 
    if (tmp.indexOf(0) == '-') { 
     return -1; 
    } 
    return 1; 
} 

PS :이 코드를 사용하지 마십시오. 내가 이것을 사용 농담

1

입니다 :

return (number < 0 && -1) || 1; 
0

// n은 전화 번호의 전화 번호 // nSign = 기호

nSign = Math.round (으로, Math.sin (N) *-1);

/* Math.sin은 -1과 1 사이의 숫자를 반환합니다. 비 DEC 수를 얻으려면 반올림해야합니다. 그 번호는 귀하의 번호와 반대입니다. 나를 이길,

관련 문제