>백엔드 개발 >C++ >C의 모듈러스 연산자(%)가 정수에만 작동하는 이유는 무엇이며, 분수 나머지를 어떻게 처리할 수 있습니까?

C의 모듈러스 연산자(%)가 정수에만 작동하는 이유는 무엇이며, 분수 나머지를 어떻게 처리할 수 있습니까?

Patricia Arquette
Patricia Arquette원래의
2024-12-20 21:53:10807검색

Why Does C's Modulus Operator (%) Only Work with Integers, and How Can I Handle Fractional Remainders?

C에서 모듈러스 나눗셈(%)이 정수로만 작동하는 이유

C에서 모듈러스 연산자(%)를 사용한 나눗셈은 정수로 제한됩니다. 정수 나누기의 고유한 특성으로 인해 피연산자. 정수를 나누면 결과는 당연히 정수가 되고, 나머지(몫과 제수를 뺀 결과)도 정수가 됩니다.

그러나 실수를 다룰 때에는 " 나머지'는 더욱 복잡해집니다. 다음 예를 고려하십시오.

double x = 3.1;
int y = 2;
double remainder = x % y;

이 경우 원하는 결과는 1.1입니다. 3.1을 2로 나누면 몫은 1이고 나머지는 1.1이 되기 때문입니다. 안타깝게도 C의 모듈러스 연산자는 x와 y를 모두 정수로 처리하므로 정수 나머지는 1.1이 아닌 1이 됩니다.

C에서 이 문제를 해결하려면 표준 라이브러리의 fmod 함수를 활용할 수 있습니다. 이 함수는 피연산자가 실수인 경우에도 하이브리드 나누기를 수행하고 소수 나머지를 반환합니다. 예를 들면 다음과 같습니다.

#include <math.h>

double x = 3.1;
int y = 2;
double remainder = fmod(x, y);

이렇게 하면 1.1의 정확한 나머지가 생성되어 모듈러스 연산이 정수와 실수 피연산자 모두에 대해 일관되게 동작하도록 보장합니다.

위 내용은 C의 모듈러스 연산자(%)가 정수에만 작동하는 이유는 무엇이며, 분수 나머지를 어떻게 처리할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.