본문 바로가기
C 프로그래밍

독학으로 배우는 C언어 012 자료형과 연산 6

by 솔토지빈 2024. 6. 25.
반응형

독학으로 배우는 C언어 012 자료형과 연산 6

Contents

     

    1. 실수형

    실수형은 소수점이 포함된 수치 자료를 처리할 때 사용되는 자료형이다. 지금까지의 정수형이나 문자형은 소수점 이하의 수는 표현할 수 없었다. 소수가 포함된 연산을 하거나 출력할 때는 실수형을 사용한다.

     

    실수형의 허용범위

    실수형 바이트수 음수 사용 데이타 허용범위 형식 지정자
    float 4 -3.4 × 10(38) ~ 3.4 × 10(38) %f
    double 8 -1.79 × 10(308) ~ 1.79 × 10(308) %lf
    long double 8 double 큰 수 %Lf

     

    실습 1: float 형의 사용 1

    다음의 프로그램을 작성하여 ex030.c 저장하고 실행해 보자.

    #include<stdio.h>
    int main(void)
    {
    	float num1, num2, plus, minus, mult, divi;
    	num1 = 718.3563;
    	num2 = 34.2612;
    	plus = num1 + num2;
    	minus = num1 - num2;
    	mult = num1 * num2;
    	divi = num1 / num2;
    	printf("%f + %f = %f\n", num1, num2, plus);
    	printf("%f - %f = %f\n", num1, num2, minus);
    	printf("%f * %f = %f\n", num1, num2, mult);
    	printf("%f / %f = %f\n", num1, num2, divi);
    	return 0;
    }

     

    설명 : 행 설명

    4: 사용할 변수를 실수형으로 선언한다.

    5: 6: 실수를 각각 변수에 대입한다.

    10: 실수형 변수의 표시는 %f 로 지정한다.

     

    num1의 값이 718.3563가 저장되지 않고 718.356323으로 저장되었다. 이처럼 수치의 정확도에 문제가 생길 수 있다. 소수 이하의 길이를 지정하지 않았을 때는 일반적으로 6자리까지 표시된다.

     

    실습 2: float 형의 사용 2

    반지름이 14.36인 원의 면적과 둘레를 구하는 프로그램을 작성하여 ex031.c 저장하고 실행해 보자.

    #include<stdio.h>
    int main(void)
    {
    	float pi, radius, area, circum;
    	pi = 3.14159;
    	radius = 15.35;
    	area = radius * radius * pi;
    	circum = 2. * pi * radius;
    	printf("면적= %.3f\n", area);
    	printf("둘레= %.2f\n", circum);
    	return 0;
    }

     

    설명 : 행 설명

    새로운 것이 있다면 %f 형식에서 소수점 자리의 지정이다.

    소수점 이하의 자릿수 표시는 “%.숫자f” 형식을 사용하면 숫자만큼의 자릿수까지 표시된다.

     

    실습 3: float 형의 사용 3

    15285.3245의 합을 실수로 구하고 출력하는 프로그램을 작성하여 ex032.c 저장하고 실행해 보자.

    #include<stdio.h>
    int main(void)
    {
    	int num1;
    	float num2, plus;
    	num1 = 14;
    	num2 = 426.4216;
    	plus = (float)num1 + num2;
    	printf("%f\n", plus);
    	return 0;
    }

     

    설명 : 행 설명

    실수와 정수의 계산에서는 변수의 형태를 통일 할 필요가 있다.

    따라서 (float)num1 에 의해 1414.000000으로 변환한다.

     

    실습 4: float 형의 사용 4

    다음의 출력하는 프로그램을 작성하여 ex033.c 저장하고 실행해 보자.

    #include<stdio.h>
    int main(void)
    {
    	int plus1, plus2;
    	float num1, num2;
    	num1 = 55.8842;
    	num2 = 78.2964;
    	plus1 = (int)(num1 + num2);
    	plus2 = (int)num1 + (int)num2;
    	printf("%d\n", plus1);
    	printf("%d\n", plus2);
    	return 0;
    }

     

    설명 : 행 설명

    8: 두 개의 실수를 먼저 덧셈하고 정수로 변환하여 저장한다.

    9: 실수형 변수의 값을 정수로 변환하여 덧셈하고 저장한다.

     

    2. %f의 활용

    실습 1: %f의 활용 1

    다음의 출력하는 프로그램을 작성하여 ex034.c 저장하고 실행해 보자.

    #include<stdio.h>
    int main(void)
    {
    	float num1, num2, divi;
    	num1 = 38.1234567;
    	num2 = 38.1234567;
    	divi = num1 / num2;
    	printf("%f / %f = %f \n", num1, num2, divi);
    	printf("%2.6f / %4.5f = %f \n", num1, num2, divi);
    	printf("%3.3f / %3.4f = %f \n", num1, num2, divi);
    	return 0;
    }

     

    설명 : 행 설명

    양식 출력형태 내 용
    ("%f",b) 3.14159 실수 출력
    ("%8.3f",b) ...3.142 전체 8자리 소수이하 3자리 출력
    ("%-8.3f",b) 3.142... 소수3자리이하 반올림
    ("%+8.3f",b) ..+3.142 +, - 부호를 붙여 출력
    ("%08.3f",b) 0003.142 앞의 공백을 0 으로 채움
    ("%+08.3f",b) +003.142 부호를 붙이고 공백을 0 으로 채움

     

    실습 2: %f의 활용 2

    다음의 출력하는 프로그램을 작성하여 ex035.c 저장하고 실행해 보자.

    #include<stdio.h>
    int main(void)
    {
    	float num1 = 123.45;
    	float num2 = -12.345;
    	printf("%f\n", num1);
    	printf("%10.3f\n", num1);
    	printf("%+15.10f\n", num1);
    	printf("%010.3f\n", num1);
    	printf("%10.3f\n", num1);
    	printf("%f\n", num2);
    	printf("%10.3f\n", num2);
    	return 0;
    }

     

    실습 3: %f의 활용 3

    다음의 출력하는 프로그램을 작성하여 ex036.c 저장하고 실행해 보자.

    #include <stdio.h>
    int main(void)
    {
    	double num1, num2, plus;
    	num1 = 3146.326545452;
    	num2 = 49.745764234;
    	plus = num1 / num2;
    	printf("%4.9lf / %lf = %lf \n", num1, num2, plus);
    	return 0;
    }

     

    설명 : 행 설명

    8; %4.9lf 는 정수부분 4자리와 소수 부분 9자리까지를 출력하기 위해 사용했다.

    자리수를 지정하지 않으면 소수 부분은 6자리까지만 출력된다.

    반응형

    댓글