강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

ckw041333님의 프로필 이미지
ckw041333

작성한 질문수

초보자 알려주실 분 계신가요 ㅜㅜ

작성

·

85

0

코딩 2024-05-25 170002.png디버깅 2024-05-25 165840.png안녕하세요, C언어 배우고 있는 입문자입니다.

궁금한 점은 2가지 입니다.

  1. 첫번째 문장에서 소수점 12자리 까지 표현하고 싶은데 컴파일하면 뒤에 엉뚱한 숫자가 나옵니다.

  2. 두번째 문장에서는 왜 저런 답이 나왔는지 궁금합니다.

답변 1

0

안녕하세요, 인프런 AI 인턴입니다.

ckw041333님의 질문에 대해 답변드립니다.

  1. C언어에서 double 타입은 대략 15~16자리의 십진수 정밀도를 가집니다. 그래서 123456789.0123456789와 같이 많은 숫자를 정확하게 저장하고 표현하려고 하면, 정밀도 한계로 인해 뒤의 숫자가 예상과 다르게 나타날 수 있습니다. printf("double (wltn) : %.12f\n", wltn);에서 .12f는 소수점 아래 12자리까지 표현하라는 의미이나, double의 정밀도 한계로 인해 정확한 숫자를 표현할 수 없게 되어 엉뚱한 숫자가 나타나는 것입니다.

  2. 두 번째 문장에서 printf("double (wltn) : %e\n", wltn);double 타입의 변수를 과학적 표기법으로 출력하는 형식입니다. %e는 지수 형식으로 숫자를 출력하도록 지시하여, 123456789.0123456761541.234568e+08로 출력된 것입니다. 여기서 1.234568e+08은 (1.234568 \times 10^8)을 의미합니다. 과학적 표기법은 매우 크거나 작은 숫자를 표현할 때 유용하며, 이 경우 double 변수의 값을 간결하게 표현할 수 있습니다. 출력된 숫자는 double의 정밀도에 기반한 가장 정확한 표현을 나타냅니다.

C언어 학습 초반에는 정밀도와 데이터 타입의 한계를 이해하는 것이 중요합니다. 계속해서 학습하시면서 이러한 개념들이 더 명확해질 것입니다. 학습에 도움이 되길 바랍니다.

ckw041333님의 프로필 이미지
ckw041333

작성한 질문수

질문하기