2014-04-16 5 views
0

저는 C++에 초보자이며 제곱근을 계산하려고합니다.sqrt 함수가 올바른 값을 계산하지 않습니다.

#include <math.h> 
#include <stdio.h> 

int _tmain(int argc, _TCHAR* argv[]) 
{ 
    double a; 
    a=sqrt(2.0); 
    printf("Square root from 2 is %d\n",a); 
    return 0; 
} 

그러나 출력은 Square root from 2 is 1719614413이다 : 나는 다음과 같은 서면으로 작성했습니다. 나는 이것을 정말로 이해하지 못한다. 설명해주세요.

+2

'std :: cout'을 사용하십시오. 유형 안전성이없는 문자열 형식의 인코딩 유형은 상당히 솔직하게 무의미합니다. – chris

+2

'printf' 문에서'% d'을 사용했습니다. 문서를 찾은 다음, * % *가 무엇을 위해 사용되고, 대신에 사용해야 하는지를 * 우리에게 알려줄 수 있습니다. – abelenky

+0

* "이 질문은 간단한 인쇄상의 오류로 인해 발생했습니다."* (vtc) – abelenky

답변

4

C++이 아닌 C++를 주로 사용하며 C++이 아니므로 실수로 사용했습니다.

#include <cmath> 
#include <iostream> 

int main() 
{ 
    double a = std::sqrt(2.0); 

    std::cout << "Square root from 2 is " << a << std::endl; 

    return 0; 
} 

추가 설명 :이 문자열을 출력하고 정수 (% d 개)이 전달 될 것으로 기대

printf("Square root from 2 is %d\n",a); 

당신은 그 실수를 단단 C++를, C를 배우거나 사용 할 수 있습니다. 당신은 쓰레기로 나오는 이중을 통과 시켰습니다. 복식에 (% lf)을 사용할 수 있습니다.

+0

"쓰레기로 나옵니다": 실제로 정의되지 않은 동작입니다. 하나의 형식 지정자가있을 때 이것이 가장 빈번한 영향이지만 나중에 "% s"지정자가 있었더라도 충돌이 나에게 놀라지 않을 것입니다. –

1

우리 예제를 계속 사용하려면 % d 대신 % f를 사용하십시오.

관련 문제