2013-04-28 11 views
1

체크 모드에서 코드를 실행할 때 약간의 불일치가 생기기 때문에 궁금합니다. 예를 들어 :x.pow (n)과 pow (x, n)의 차이점은 무엇입니까?

List<List> getFactors(int n) 
{ 
    List<List> factors = [[1, n]]; 
    double top = pow(n,1/2); 
    int test = 2; 
    while (test <= top) 
    { 
     if (n % test == 0) 
      factors.add([test, n ~/ test]); 
     test++; 
    } 
    return factors; 
} 

는 그대로 작동하지만 내가 변경할 때이 pow(n,1/2)n.pow(1/2)에 체크 모드에서 오류를 반환합니다. 유일한 수정은 n의 유형을 두 배로 변경하는 것입니다. 왜 이런거야? 또한 두 사람 사이의 일반적인 차이점을 알고 좋은 것입니다. 감사!

+0

int, num 또는 double에 pow 메서드가 있다고 생각하지 않습니다. Math.pow() 만 있습니다. http://api.dartlang.org/docs/releases/latest/dart_math.html#pow http://api.dartlang.org/docs/releases/latest/dart_core/num.html –

+0

목록에없는 것으로 알고 있습니다. API 참조를 시도하지만'print (9.pow (2)); '와 같은 것을 시도하면 제대로 동작 할 것입니다. – CopOnTheRun

답변

3

업데이트 : int/num/double.pow()는 현재 VM에만 존재하며 removed입니다. 대신 math.pow()을 사용하십시오.


int.pow에 대한 서명은()이다 :

int pow(int exponent) 

그래서 다음 예는 정수로 평가하지 않습니다 1/2로 확인 모드에서 실패합니다.

int i = 5; 
i.pow(1/2); 

그래서 int.pow()을 (만 확인 모드에서 확인) 정수 지수를 예상 호출 및 정수를 반환합니다.

math.pow (num x, num exponent)를 호출 할 때 정수 지수가 필요하지 않으며 x가 정수이고 지수가 double 인 경우 double을 반환 할 수 있습니다.

여기에 math.pow() 설명서 링크가 있습니다. 여기에 int.pow()math.pow() 소스 코드에 대한 링크가 있으므로 어떤 일이 발생하는지 확인할 수 있습니다.

관련 문제