컴퓨터 엑셀 워드 포토숍 구글어스 WINDOWS JAVASCRIPT JAVA C++

 
Previous Post AI (.ai) 확장자 보기/열기/읽기 프로그램; 에이 아이 파일, ai File Exte...중국어 에디터; 좋은 중문 텍스트 에디트(간체 편집기); Chinese Text Edito...Python/파이썬] 문자를 아스키 코드 번호로 변환, ASCII Code 를 문자(Cha...Python/파이썬] 10진수 숫자를 16진수(헥사;Hex)로 변환 출력Python/파이썬] 숫자 리스트(List), 최대값 최소값 구하기; Max Min Num...칼짜이스 렌즈; 니콘 마운트; Carl Zeiss, Nikon SLR-DSLR, 칼자이스나누기 기호, 나눗셈 특수 문자 입력 방법, 곱하기 곱셈 기호; Divide Sign, S...음력 양력 날짜 변환/계산, 정확한 일출 일몰 정보 사이트; Korean Lunar Cal...XCOPY.EXE 프로그램/명령어 다운로드(Download) 받는 곳은? : 크로스 카피/...풀다운 메뉴(Pull-down Menu)란? 엑셀/워드/포토샵 등의 프로그램에서

C언어] C에서 제곱근, 루트 근사값 계산 방법, sqrt() 함수 사용법

Tuesday, January 02, 2007

C에서는 우선 math.h 헤더 파일을 인클루드해 주고, sqrt() 에 실수형 숫자를 입력하면, 그 숫자의 제곱근이 구해집니다.


2의 제곱근(루트2의 근사값) 계산 출력 예제: math.h sqrt


소스 파일명: 0.cpp
#include <stdio.h>
#include <math.h>

int main(void) {
  double d = sqrt(2.0);

  printf("%f\n", d);
  // 화면 출력 결과: 1.414214

  return 0;
}


그런데 루트2를 구할 때에, sqrt(2) 이렇게 정수(int)로 2를 입력하면 안됩니다. 반드시 sqrt(2.0) 이렇게 실수형으로 2를 입력해야 합니다. 정수 뒤에 "점+제로"를 붙이면 실수형 상수가 됩니다. 제곱근 구하는 함수인 sqrt() 가 정수형을 입력받지 않기 때문입니다. 당연히 반환값도 실수형입니다. 즉 입출력이 모두 실수형입니다.



컴파일 및 실행 결과:
첫번째 실행 때는 sqrt(2.0) 이렇게 해주었는데,
두번째 실행 때는 sqrt(2) 이렇게 해주었기 때문에 에러가 났습니다.
D:\Z>cl 0.cpp & 0.exe
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.

0.cpp
Microsoft (R) Incremental Linker Version 7.10.3077
Copyright (C) Microsoft Corporation.  All rights reserved.

/out:0.exe
0.obj
1.414214

D:\Z>cl 0.cpp & 0.exe
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.

0.cpp
0.cpp(5) : error C2668: 'sqrt' : ambiguous call to overloaded function
        D:\Program Files\Microsoft Visual C++ Toolkit\include\math.h(626): could
 be 'long double sqrt(long double)'
        D:\Program Files\Microsoft Visual C++ Toolkit\include\math.h(578): or
    'float sqrt(float)'
        D:\Program Files\Microsoft Visual C++ Toolkit\include\math.h(200): or
    'double sqrt(double)'
        while trying to match the argument list '(int)'
1.414214

D:\Z>


ambiguous call to overloaded function... 의 뜻은, sqrt() 함수가 다음과 같은 3종류가 있는데

long double sqrt(long double)
float sqrt(float)
double sqrt(double)

정수형(int) 파라미터를 입력받는 sqrt() 함수는 없다는 뜻입니다.





다음과 같이 (double) 로 캐스팅하여, 2를 실수로 만들어 주어도 됩니다.
#include <stdio.h>
#include <math.h>

int main(void) {
  double d = sqrt( (double) 2 );

  printf("%f\n", d);
  // 화면 출력 결과: 1.414214

  return 0;
}




1~100까지 제곱근 계산 출력 예제:
▶▶ C언어] printf함수, 실수 소수점 자리, 너비 지정 출력 + 루트 계산 - Square Root

▶▶ C언어] 세제곱근, 네제곱근, 거듭제곱근 구하기; Cube Root Function; cbrt()

▶▶ C언어] 제곱 함수,기호, 거듭제곱(세제곱,네제곱), 몇 승 구하기; Raise Power, Pow

▶▶ C언어 VC++] 가우시안 랜덤 난수 발생; 가우스 분포 Gaussian Random Number

1 Comments:
At 5:53 PM, Blogger Ds said...

감사합니다 ^^
많은 도움 됐어요

 

Post a Comment

<< Home RSS 2.0 feed

구글 Google 에서 제공하는 무료 블로그 서비스인 블로거 Blogger 의 인터넷 주소는 www.blogger.com 입니다. Blogger 에 블로그를 만들면, blogspot.com 이라는 주소에 블로그가 생성됩니다.
블로그를 직접 방문하지 않고도 최신 게시물을 구독하려면 RSS 2.0 feed 주소를 리더기에 등록하시면 됩니다.
Categories
Previous Posts
Monthly Archives
Top