코딩 | 개념 정리/C

[C언어] 함수를 활용해 두 개의 부동 소수점 일치 판별하기

PatienceLee 2021. 4. 13. 23:35

이번 포스팅은 두 개의 부동 소수점 일치를 판별하는 함수를 작성해보았습니다.

먼저 부동 소수점을 판별하는 방법은 아래와 같은데요.

따라서 절대값을 반환하는 함수와 두 수를 비교해서 최소값을 구하는 함수를 추가로 작성해서 

최종적으로 부동 소수점 판별 함수에 활용하였습니다.

판별 함수에서 e는 0.000001로 정의하였고, 위 식이 성립하는 경우 즉, 두 개의 부동 소수점 수가 근사적으로 같은 값이면 1을 반환하고, 근사적으로 같지 않으면 0을 넘겨주도록 구성하였습니다.

#define _CRT_SECURE_NO_WARNINGS
#define e 0.000001
#include<stdio.h>

double f_abs(double num); // 절대값 반환 함수
double f_min(double x, double y); // 최소값 반환 함수
int f_equal(double x, double y); // 부동 소수점 근사값 계산 함수

int main(void)
{
	double x, y, z;

	printf("실수를 입력하시오: ");
	scanf("%lf", &x);
	
	printf("실수를 입력하시오: ");
	scanf("%lf", &y);

	z = f_equal(f_abs(x-y), f_min(f_abs(x),f_abs(y)));
	
	if (z == 1)
	{
		printf("두 개의 실수는 서로 같음\n");
	}
	else
	{
		printf("두 개의 실수는 서로 다름\n");
	}
	return 0;
}

double f_abs(double num)
{
	if (num < 0)
	{
		return num * -1;
	}
	else
	{
		return num * 1;
	}
}

double f_min(double x, double y)
{
	if (x < y)
	{
		return x;
	}
	else if(x >y)
	{
		return y;
	}
	else
	{
		return x; // x와 y가 같은 경우 둘 중 x값만 반환한다.
	}
}

int f_equal(double x, double y)
{
	if (x / y < e)
	{
		return 1;
	}
	else
	{
		return 0;
	}
 }

▲ 위 코드 실행시 화면 출력 값 1
▲ 위 코드 실행시 화면 출력 값 2

반응형