728x90

실수 1개를 입력받아 그대로 출력해보자.
(단, 입력되는 실수의 범위는 +- 1.7*10-308 ~ +- 1.7*10308이다.)

참고
float 데이터형을 사용하면 +- 3.4*10-38 ~ +- 3.4*1038 범위의 실수를 저장할 수 있다.
(float로 선언하고 % f로 입력받아 출력하면 된다.)

이 범위를 넘어가는(더 작거나 더 큰) 실수를 저장하기 위해서는
보다 큰 범위를 저장할 수 있는 다른 데이터형을 사용해야 정상적으로 저장시킬 수 있다.
double은 더 정확하게 저장할 수 있지만, float보다 2배의 저장 공간이 필요하다.

double 데이터형을 사용하면
+- 1.7*10-308 ~ +- 1.7*10308 범위의 실수를 저장할 수 있다.


예시
double d;
scanf("% lf", &d); // double(long float) 형식으로 입력
printf("% lf", d);

 

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main()
{
	double d;
	scanf("%lf", &d);
	printf("%.11lf\n", d);

	return 0;
}

 

scanf 할 때는 float --> % f / double --> % lf로 해야 하지만

printf 할 때는 float, double 모두 % f로 하면 되다는 얘기

 

  • c에는 default argument promotions라는 규칙이 있습니다.
  • 이 규칙에 따르면 char, short 등의 int 이하 자료형은 모두 int로 진급 (만약 안 되는 경우엔 unsigned int로 진급)
  • float형은 double로 진급
  • 결국 % f 하나로 float, double을 모두 처리 가능

 

 

728x90